rails 在表单中提交 select 个选项

rails submit select options in form

我需要从视图中提交一个状态,但是当我 select 我在视图中的状态时,我想去掉提交按钮并提交数据。我已尝试使用 select 标签来执行我想要的操作,但不会发送新状态。

继续: 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

如果您在 select 选项中包含 jquery 而不是 data: {submit_on_change: true},则可以使用 onchange: "$(this).closest('form').submit()".

您所做的只是向您的 select 添加一个数据属性,所以它看起来像这样

<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 函数将事件处理程序附加到匹配 select 或 '[data-submit_on_change=true] 的所有元素上的事件 change