我的项目管理部分有一个索引页
<% @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_for
with 。:approve
form_for
:reject
index
来自相应控制器的动作非常简单
def index
@reviews = Review.all
end
我意识到这一定是正常行为,但我希望reject
只有在提交相应表单时才调用方法。有没有办法解决它?谢谢你。
更新
仅供将来参考(包括我自己的):使用button_to
helper 来做这样的事情更容易
<%= 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 %>