我有一个使用Rails 3.1.x应用程序的简单表单视图:
<%= form_for(:mymodel) do |f| %>
<% if @mymodel.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@mymodel.errors.count, "error") %> prohibited this model from being saved:</h2>
<ul>
<% @mymodel.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
Amount:
<%= f.text_field :count %><br /><br />
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
在此处点击提交时,它会发布到/mymodels/new
。如何强制它为mymodels_controller.rb转到正确的创建操作?
答案 0 :(得分:5)
选项1:遵循惯例并向form_for
帮助程序提供新的未保存记录。您可能已在@mymodel
上设置此类对象,并在您的控制器的new
操作中设置。因此,以下代码段应该可以正常运行:
<%= form_for(@mymodel) do |f| %>
如果它不起作用,您可以像这样设置@mymodel
您的操作:
class MyModelsController
def new
@mymodel = MyModel.new
end
end
选项2:明确说明您的网址和方法:
<%= form_for(:mymodel, :url => create_mymodel_path, :method => :post) do |f| %>