rails提交表单中的选择选项

时间:2015-01-23 16:55:25

标签: ruby-on-rails forms ruby-on-rails-3

我需要从视图中提交状态,但是当我在视图中选择状态时,我想摆脱提交按钮并提交数据。我尝试过选择标签,它可以完成我想要的但不会发送新状态。

要恢复: 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

2 个答案:

答案 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()"