4

Rails3.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 に答える