我有控制器:
class GroupRequestsController < ApplicationController
def update
@group_request = GroupRequest.find(params[:id])
respond_to do |format|
if @group_request.update_attributes(params[:group_request])
format.js
else
format.js
end
end
end
在我看来,我有:
<button type="button" class="button positive tiny">Add</button>
<button type="button" class="button tiny">Ignore</button>
我如何在单击时制作这些按钮,以add或ignore作为决策参数远程调用控制器的更新方法?
感谢
使用单独的表单。
-form_for :group_request, :remote => true do |f|
=f.hidden_field :decision, "Add"
%button{:type => "button", :class => "..."} Add
-form_for :group_request, :remote => true do |f|
=f.hidden_field :decision, "Ignore"
%button{:type => "button", :class => "..."} Ignore
我使用HAML语法是因为如果你不使用HAML,你应该这样做。这是发送值的唯一一致方式。Button标签有一个"value"属性,但并不是所有主流浏览器都支持它,所以你不能依赖它。不幸的是,这意味着你必须进行一系列令人讨厌的样式设置,才能让按钮并排显示。
我唯一能想到的其他选择是使用纯JS使按钮的行为像表单,但我不建议这样做,因为它不会优雅地降级。