7

_form.html.erbを作成しました。このコードは次のようになっています。

<%= form_for @book, :html => { :class => 'form-horizontal' } do |f| %>
....
    <%= f.submit nil, :class => 'btn btn-primary', :name => 'update' %>
    <%= f.submit 'Destroy', :class => 'btn btn-danger', :name => 'destroy' %>
....
<% end %>

はい、同じフォームに2つの送信があり、どちらにも「更新」や「破棄」などの名前が付いています。

ユーザーが破棄ボタンを押すと、books_controllerの更新アクションが呼び出されます。
そして、それが「更新」要求か「破棄」要求かを判断します。
そのために、コントローラーでその名前パラメーターを取得するにはどうすればよいですか?

更新アクションは次のようになります

def update

 if params[:books][:name] == 'destroy'
  destroy transaction
 else
  update transaction
 end

end 
4

2 に答える 2

5

これを試して、

<%= f.submit 'Update', :class => 'btn btn-primary', :name => 'submit' %>
<%= f.submit 'Destroy', :class => 'btn btn-danger', :name => 'submit' %>

これで、更新するとparams[:submit]「更新」として取得され、破棄するとコントローラーで「破棄」として取得されますparams[:submit]

于 2012-12-21T10:05:06.760 に答える
0

破棄するとき、フォームの他の入力値が必要ですか?

2つのフォームを使用する方が簡単(かつクリーン)です。1つは更新アクションを対象とする入力を使用し、もう1つは破棄アクションを対象とする破棄ボタンのみを使用します。

他の入力にアクセスする必要がある場合でも、2つの異なるアクションと2つの異なるフォームを使用することをお勧めします。さらに、JS / jQueryを使用して、送信時に最初のフォームから必要なフィールドの値をフェッチすることをお勧めします。 2番目のフォーム

于 2012-12-21T09:45:57.837 に答える