Rails表示发布到/ new而不是/ create?

时间:2012-04-16 20:04:15

标签: ruby-on-rails ruby

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

1 个答案:

答案 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| %>