Rails 4渲染js:重定向到另一个页面并显示原始js

时间:2014-03-27 06:23:28

标签: javascript ruby-on-rails ruby-on-rails-4

TestimoniesController render js:中,如果@testimony.save不成功,我写了if @testimony.save redirect_to @testimony else render js: "alert('Please make sure you feel out every field of the Testimonial!');" end 行。

/testimonies

它不是呈现我写的警报,而是将我重定向到new.html.erb路由,只显示应该呈现为javascript的字符串,而不是其他内容。我的JS被禁用了吗?

这是我的<h1> New Testimonial</h1> <%= form_for :testimony, url:testimonies_path do |f| %> <p> <%= f.label :first_name %><br> <%= f.text_field :first_name %> </p> <p> <%= f.label :last_name %><br> <%= f.text_field :last_name %> </p> <p> <%= f.label :email %><br> <%= f.text_field :email %> </p> <p> <%= f.label :contact_number %><br> <%= f.text_field :contact_number %> </p> <p> <%= f.label :country %><br> <%= f.text_field :country %> </p> <p> <!--bunch of the same stuff --> <p> <%= f.submit %> </p> <% end %> 文件:

{{1}}

1 个答案:

答案 0 :(得分:1)

为了响应js,你必须在form_for中添加remote :: true,并以ajax的身份提交你的请求

<%= form_for :testimony, url:testimonies_path, remote: :true do |f| %>

但是你的

 redirect_to @testimony

不起作用,因为它仅适用于html格式,因此在该场景中用

替换此行
render js "location.href = '#{testimony_path}'";