在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}}
答案 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}'";