4

我有一个使用 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 执行正确的创建操作?

4

1 回答 1

6

选项 1:遵循约定并向form_for助手提供新的未保存记录。您可能已经在控制器@mymodel的操作上设置了这样的对象。new所以下面的代码片段应该可以很好地工作:

<%= form_for(@mymodel) do |f| %>

如果它不起作用,您可以@mymodel像这样设置您的操作:

class MyModelsController
  def new
    @mymodel = MyModel.new
  end
end

选项 2:明确说明您的 URL 和方法:

<%= form_for(:mymodel, :url => create_mymodel_path, :method => :post) do |f| %>
于 2012-04-16T20:07:04.243 回答