我需要从视图中提交状态,但是当我在视图中选择状态时,我想摆脱提交按钮并提交数据。我尝试过选择标签,它可以完成我想要的但不会发送新状态。
要恢复: f.select发送新数据,但只发送一个我想要删除的提交按钮。
我忘记了代码中的某些内容吗?
我的控制器:
def update_status
@ticket = Ticket.find(params[:ticket_id])
if @ticket.update_attributes(params[:ticket])
redirect_to tickets_path
end
end
我的观点:
-if current_user.admin?
div class="field"
=form_for @ticket, url: ticket_update_status_path(@ticket), method: :get do |f|
= f.select(:status, options_for_select(@status, @ticket.status) , :class => 'large m-wrap', data: {submit_on_change: true})
.btn-blue
= f.submit
-else
= @ticket.status
答案 0 :(得分:1)
你所做的只是在你的选择中添加一个数据属性,所以它看起来像这样
<select name="ticket[status]" data-submit_on_change="true">
<option>...</option>
...
</select>
显然添加数据属性不会自动提交表单!你需要的是一些JavaScript,如下所示(假设你也使用jQuery):
$(document).on('change', '[data-submit_on_change=true]', function(event) {
$(this).closest('form').submit();
});
on
函数会在与选择器change
匹配的所有元素上为事件'[data-submit_on_change=true]
附加事件处理程序。
答案 1 :(得分:0)
如果您在选择选项中包含jquery而不是data: {submit_on_change: true}
,则可以使用onchange: "$(this).closest('form').submit()"
。