所以,在我的rails应用程序中,我在其中一个页面上ajaxified错误消息。这个过程(所以每个人都理解)首先,在我的“编辑”link_to
中,我在其末尾添加了:remote => true
,因此让它发送了一个ajax请求。然后我在format.js
块中添加了行respond_to do |format|
。然后,我使用以下代码行$('#error').html("<%= flash[:error] %>");
创建了一个edit.js.erb文件,它基本上在当前页面中找到了错误div,并用错误的flash消息替换了该div中的html。这很酷吗?如果发生错误,不会再烦人的页面刷新。
问题是,我想对我的所有编辑和销毁页面执行此操作,但是如何不为每个视图文件夹制作edit.js.erb和destroy.js.erb文件?看起来很简单,也许我只是错过了一个明显的答案,因为我已经筋疲力尽,但我无法弄明白......所以...帮助?????
EDIT!
这是我的编辑控制器
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
现在的问题是,它可以正常显示错误,但如果没有错误,它就不会动作呈现编辑页面......在服务器窗口中它显示它确实,但它实际上并没有在屏幕上显示...有什么想法吗?
答案 0 :(得分:2)
我建议你制作一个通用的JS.erb文件,例如:
# app/views/shared/show_errors.js.erb
('#error').html("<%= flash[:error] %>");
然后在您的控制器操作中或从另一个JS.erb文件中输入:
render :template => "shared/show_errors"
瞧!
答案 1 :(得分:0)
我实际上是偶然解决了我自己的问题...我从{render :template => 'table/edit', :formats => :html}
区块删除了行else
。