我的项目管理部分有一个索引页
<% @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 %>
where:approve和:reject是Review模型中的公共实例方法。由于某种原因,当我加载此索引页面时,它会自动调用review.reject将相应is_rejected字段设置为true. 如果我用位删除,同样的行为也适用于form_forwith 。:approveform_for:reject
index来自相应控制器的动作非常简单
def index
@reviews = Review.all
end
我意识到这一定是正常行为,但我希望reject只有在提交相应表单时才调用方法。有没有办法解决它?谢谢你。
更新
仅供将来参考(包括我自己的):使用button_tohelper 来做这样的事情更容易
<%= 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 %>