0

因此,在我的 rails 应用程序中,我在我的一个页面上显示了错误消息。这个过程是(所以每个人都明白)首先,在我的“编辑”中,link_to:remote => true在它的末尾添加了它,因此它发送了一个 ajax 请求。format.js然后我在我的respond_to do |format|块中添加了该行。然后,我使用以下代码行创建了一个 edit.js.erb 文件,该文件$('#error').html("<%= flash[:error] %>"); 基本上找到了当前页面中的错误 div 并将该 div 中的 html 替换为错误 flash 消息。这很酷吧?发生错误时不再烦人的页面刷新。

问题是,我想对我的所有编辑和销毁页面执行此操作,但是如何不为每个视图文件夹创建 edit.js.erb 和 destroy.js.erb 文件?看起来很简单,也许我只是因为筋疲力尽而错过了一个明显的答案,但我无法弄清楚......所以......帮助??????

编辑!

这是我的编辑控制器

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

现在的问题是,它可以很好地显示错误,但是如果没有错误,它就不会呈现编辑页面...在服务器窗口中它显示它确实如此,但它实际上并没有显示在屏幕上...有什么想法吗?

4

2 回答 2

2

我建议您然后制作一个通用的 JS.erb 文件,例如:

# app/views/shared/show_errors.js.erb
('#error').html("<%= flash[:error] %>");

然后在您的控制器操作中,或从另一个 JS.erb 文件中,输入:

render :template => "shared/show_errors"

瞧!

于 2012-10-26T16:09:04.743 回答
0

我实际上是偶然解决了自己的问题...我{render :template => 'table/edit', :formats => :html}else块中删除了该行。

于 2012-10-29T15:48:38.513 回答