将.js控制器请求呈现为html

时间:2012-05-15 19:18:31

标签: ruby-on-rails ajax ruby-on-rails-3 controller

我的Rails应用中有before_filter,如果用户在提交请求时以html或js格式注销,则会将用户发送到login_url

我希望我的format.jsformat.html生成相同的结果,在下面的情况下,使用'notice'布局渲染视图。我怎么能这样做?

respond_to do |format|
  format.js
  format.html{ render :layout => "notice" }
end

1 个答案:

答案 0 :(得分:7)

你可以强制使用这样的可用格式:

respond_to do |format|
  format.js   { render :layout => "notice", :formats => [:html] }
  format.html { render :layout => "notice" }
end

编辑:

您需要的是文档的某些部分被响应替换。这是通过使用执行该作业的JavaScript进行响应来完成的:

在您的控制器中:

respond_to do |format|
  format.js
  format.html { render :layout => "notice" }
end

在您的login.js视图中:

$('#whatever').html('<%= escape_javascript( render :login, formats: [ :html ]) %>')

......或类似的东西