我有一个非常标准的Rails HAML新对象形式,可以执行常规操作并以:
结束= f.submit "Add scenario"
这很有效,scenarios_controller.rb
也很简单:
def create
...create scenario...
redirect_to scenarios_path
end
但是,我还开发了一个向导类型的表单,需要在按下我的按钮时执行一些JavaScript:
= f.submit "Add scenario", :onclick => "return validateForm()"
在我的CoffeeScript中,我会收集所有信息并完成:
$.post(
url
data
(data, textStatus, jqXHR) ->
# How do I follow the redirect?
return false
我的url
和data
是正确的,因为上述控制器正常工作并创建了我的对象,但我的页面没有重定向到scenarios_path
。我想我应该对帖子结果做些什么,但是在网上搜索我找不到什么,并且检查Chrome调试器中的返回字段并没有提出任何建议。我看到的唯一建议是使用data.redirect
,但这样的字段不存在,尽管jqXHR.responseText
似乎包含我要重定向到的页面。
答案 0 :(得分:2)
我使用respond_to块以不同的方式处理对Scenario#create
的HTML调用和对Scenario#create
的JS调用。
在scenarios_controller.rb
文件中:
def create
# create your object
respond_to do |format|
format.html do
redirect_to scenarios_path
end
format.js
end
end
在views/layouts/scenarios/create.js.erb
中,然后输入类似的内容:
window.location.replace("<%= scenarios_path %>");
当您使用JS调用Scenario#create
时,将呈现create.js.erb
文件并强制重定向。当您使用HTML调用Scenario#create
时,redirect_to
调用将照常进行。