【问题标题】:Rails form_tag unknown format error as js format with remote: trueRails form_tag unknown format error as js format with remote: true
【发布时间】:2014-06-17 00:54:13
【问题描述】:

我正在尝试将表单添加到模式中,然后使用 remote: true 通过 JS 格式提交表单,但表单似乎以 HTML 格式提交,导致未知格式问题。任何帮助将不胜感激。

Started POST "/create_deliv_extra" for 127.0.0.1 at 2014-06-16 20:38:17 -0400
Processing by DeliveriesController#create_deliv_extra as HTML

Completed 406 Not Acceptable in 21ms

ActionController::UnknownFormat

表格:

</br>
<%= form_tag create_deliv_extra_url, remote: true, class:"form-inline mb10 mt5", id:"extra_f_#{order.id}" do %>
  <%= text_field_tag :description, @extra.description, placeholder: "Description", "data-provide"=>"typeahead", autocomplete: :off, "data-source"=>"#{Extra.all.pluck(:description).uniq}", class:"span4" %>
  <% if order.cod == true || current_user.role == "Billing" || current_user.role == "admin" || current_user.role == "Exec" %>
    <div class="input-prepend">
      <span class="add-on">Amount $</span>
      <%= text_field_tag :amount, @extra.amount, placeholder: "$000.00", class:"input-xs" %>
    </div>
  <% end %>
  <div class="input-prepend">
    <span class="add-on">Quantity</span>
    <%= text_field_tag :quantity, @extra.quantity.present? ? "%g" % @extra.quantity : 1, class:"input-xxs" %>
  </div>
  <% next_d = order.deliveries.present? ? order.deliveries.maximum(:delivery_counter) + 1 : 1 %>
  <div class="input-prepend">
    <span class="add-on">From</span>
    <%= text_field_tag :load_start, next_d, class:"input-xxxs" %>
  </div>
  <div class="input-prepend">
    <span class="add-on">To</span>
    <%= text_field_tag :load_end, next_d, class:"input-xxxs" %>
  </div>
  <%= select_tag :extra_type, options_for_select(["Per Yard","Per Load","Flat Fee"], @extra.extra_type), class:"input-small" %>
  <%= hidden_field_tag :order_id, order.id %>
  <%= hidden_field_tag :truck_id, @id %>
  <%= button_tag "Add", class:"btn btn-danger" %>
<% end %>

控制器:

def create_deliv_extra
    @order = Order.find(params[:order_id])
    @id = params[:truck_id]
    @extra = Extra.create(amount: params[:amount], extra_type: params[:extra_type], order_id: params[:order_id], description: params[:description], quantity: params[:quantity], load_start: params[:load_start], load_end: params[:load_end])
    @extras = @order.next_deliv_extras.length > 1 ? "Extras: " + @order.next_deliv_extras : "No Extras"
    respond_to do |format|
      format.js
    end
  end

我也尝试在form_tag 中添加format: :js,但仍然收到相同的错误。

【问题讨论】:

    标签: javascript jquery ajax ruby-on-rails-4


    【解决方案1】:

    我知道这个问题很老,但我遇到了同样的问题,发现我的application.js 不需要jquery_ujs。我将它添加到我的application.js 文件中:

    //=require jquery
    //=require jquery_ujs
    

    现在remote 链接和表单可以正常工作:)

    【讨论】:

      【解决方案2】:

      我相信您的问题可能源于 form_tag 与另一个表单(form_tag、form_for 或 html 表单)。如果是这种情况,只需在 html 中找到第一个表单开始和结束的方法,然后在第一个表单结束后启动第二个表单。

      <%= form_for do %>
       ...
        <%= button_tag "#" %>
      <% end %>
      
      <%= form_tag create_deliv_extra_url, remote: true, class:"form-inline mb10 mt5", id:"extra_f_#{order.id}" do %>
        ...
        <%= button_tag "Add", class:"btn btn-danger" %>
      <% end %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        相关资源
        最近更新 更多