ruby-on-rails - .js.erb文件可用于所有其他 View ?

标签 ruby-on-rails ajax error-handling

因此,在我的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/

相关文章:

javascript - Heroku 和 Rails 4 : some javascript not working

ruby-on-rails - Form_for "First argument in form cannot contain nil or be empty"错误

javascript - 如何从 application.js 在 rails 中访问 yml 文件?

javascript - Ajax 调用无法从 Web api 服务获取返回消息

ajax - Stack Exchange 如何检查新帖子/评论?

jQuery/AJAX - 响应格式

jquery - 复选框 : how to display elsewhere? 的验证规则

ruby-on-rails - 安装 atomic (1.1.16) 时出错,Bundler 无法继续

graphics - XNA graphicsdevice.present在 “value does not fall within the expected range”上崩溃

ruby - Controller 和交互器错误处理的最佳实践