我在新视图和编辑视图中都看到相同的代码。
<% form_for(@article) do |f| %>
<%= f.error_messages %>
..................
<p>
<%= f.submit "Updaggggte" %>
</p>
<% end %>
当我检查这些页面的来源时 新的
<form action="/articles" class="new_article" id="new_article" method="post"><div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="757ad93da031eb40a64360318f05e2cc9ada1fc6" /></div>
编辑
<form action="/articles/1" class="edit_article" id="edit_article_1" method="post"><div style="margin:0;padding:0"><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="757ad93da031eb40a64360318f05e2cc9ada1fc6" /></div>
如何在编辑页面中包含_method隐藏字段?
提前致谢
答案 0 :(得分:0)
此字段由form_for
辅助方法提供。如果是新记录,@aritcle.new_record?
将成立,并且由于您使用脚手架设置了应用程序,Article
模型将被映射为资源(请查看config/routes.rb
),因此,辅助方法将确切地知道它必须用于创建新文章记录的方法。
答案 1 :(得分:0)
嗨感谢您的回复。有了你的答案和这个链接
http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for
我现在能够理解如何生成URL以及如何修改默认行为。
答案 2 :(得分:0)
Rails通过使用名为“_method”的隐藏输入在POST上模拟其他方法来解决此问题,该输入设置为反映所需的方法。 如果@model_obj中使用的对象具有id,则rails将_method设置为PUT,否则POST。 Rails使用new_record?为此目的的方法。