【问题标题】:rails submit select options in formrails 在表单中提交选择选项
【发布时间】:2015-01-23 16:55:25
【问题描述】:

我需要从视图提交状态,但我想摆脱提交按钮并在我在视图中选择状态时提交数据。我尝试了一个选择标签,它可以做我想要的但不发送新状态。

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

【问题讨论】:

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


    【解决方案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 函数将事件处理程序附加到与选择器 '[data-submit_on_change=true] 匹配的所有元素上的事件 change

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-30
        • 2012-05-05
        • 1970-01-01
        • 2017-03-20
        • 2021-11-24
        • 2016-08-05
        • 1970-01-01
        • 2011-09-04
        相关资源
        最近更新 更多