因此,在我的Rails应用程序中,我将页面之一上的错误消息拒之门外。该过程是(让每个人都理解)首先,在我的“edit” link_to
中,我在其末尾添加了:remote => true
,从而使它发送ajax请求。然后,我在format.js
块中添加了respond_to do |format|
行。然后,我用以下代码行$('#error').html("<%= flash[:error] %>");
创建了edit.js.erb文件,该文件基本上在当前页面中找到错误div并将该div中的html替换为错误刷新消息。这很酷吧?发生错误时,不再有烦人的页面刷新。
问题是,我想对所有编辑和销毁页面执行此操作,但是又如何不为每个 View 文件夹创建edit.js.erb和destroy.js.erb文件呢?似乎很简单,也许我只是因为我已经精疲力尽而错过了一个明显的答案,但我无法弄清楚...所以...帮助????
编辑!
这是我的编辑 Controller
def edit
user = User.find(session[:id])
@table = Table.find(params[:id])
if user.id != @table.created_by
flash[:error] = "ERROR"
respond_to do |format|
format.js {render :template => 'shared/show_error'}
format.html
end
else
flash[:error] = ""
respond_to do |format|
format.js {render :template => 'table/edit', :formats => :html}
format.html
end
end
end
现在的问题是,它可以很好地显示错误,但是如果没有错误,则它不起作用以呈现编辑页面...在服务器窗口中,它可以显示,但是实际上并没有显示在屏幕上...有什么想法吗?
最佳答案
我建议您再制作一个通用的JS.erb文件,例如:
# app/views/shared/show_errors.js.erb
('#error').html("<%= flash[:error] %>");
然后在您的 Controller 操作中,或从另一个JS.erb文件中,键入:
render :template => "shared/show_errors"
瞧!
关于ruby-on-rails - .js.erb文件可用于所有其他 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13090480/