プロジェクトの管理者部分のインデックスページがあります
<% @reviews.each do |review| %>
<p><%= review.header %></p>
<p><%= review.body %></p>
<%= form_for [:admin, review] do |f| %>
<%= f.hidden_field :approve %>
<%= f.submit "Approve" %>
<% end %>
<%= form_for [:admin, review] do |f| %>
<%= f.hidden_field :reject %>
<%= f.submit "Reject" %>
<% end %>
<% end %>
ここで:approve
、および:reject
はモデルのパブリックインスタンスメソッドReview
です。何らかの理由で、このインデックスページをロードすると、対応するフィールドをにreview.reject
設定するメソッドが自動的に呼び出されます。ビットで削除した場合も同じ動作がに適用されます。is_rejected
true
form_for
:approve
form_for
:reject
index
対応するコントローラーからのアクションは非常に簡単です
def index
@reviews = Review.all
end
reject
これは正常な動作である必要があることは理解していますが、対応するフォームを送信するときにのみメソッドを呼び出すことを期待しています。それを修正する方法はありますか?ありがとうございました。
更新
将来の参照(私自身を含む)のためだけに:そのbutton_to
ようなもののためにヘルパーを使用する方が簡単です
<%= button_to "Approve", { :action => "update", :id => review.id, :review => { :approve => true } }, :method => :put %>
<%= button_to "Reject", { :action => "update", :id => review.id, :review => { :reject => true } }, :method => :put %>