Rails 错误:ActionController::UnknownFormat 缺少此请求格式和变体的模板

问题描述 投票:0回答:2

我在索引页面中有一个表单,我希望该操作将由 Ajax 执行,以在索引页面中显示结果。 这是我在索引页中的表格:

        <%= form_with model: @shopping, :url => {:action => "searchByDates"}, remote: true do |form| %>
        <div class="form-group">
            <%= form.label :date_start %>
            <%= form.date_field :date_start, attribute: 'date' %>
            <%= form.label :date_end %>
            <%= form.date_field :date_end, attribute: 'date' %>
        </div>
        <div class="form-group">
            <%= form.submit "Cerca", class: 'btn btn-primary' %>
        </div>
    <% end %>

这是我的控制器操作:

  def searchByDates
    @date_start = params[:date_start]
    @date_end = params[:date_end]
    @shoppings = Shopping.where(:date_shopping => @date_start..@date_end)
    respond_to do |format|
      format.html
      format.js
    end
  end

这是我的 searchByDates.js.erb,位于视图文件夹中

$('#shoppingTable').html("<%= j render partial: 'shoppinglists' %>");

我已经在routes.rb文件中添加了路线

post 'shoppings/searchByDates'

我错过了什么?谢谢

javascript jquery ruby-on-rails ajax
2个回答
1
投票

您的表单上缺少参数

format

    <%= form_with model: @shopping, url: { action: "searchByDates" }, format: :js, remote: true do |form| %>
        <div class="form-group">
            <%= form.label :date_start %>
            <%= form.date_field :date_start, attribute: 'date' %>
            <%= form.label :date_end %>
            <%= form.date_field :date_end, attribute: 'date' %>
        </div>
        <div class="form-group">
            <%= form.submit "Cerca", class: 'btn btn-primary' %>
        </div>
    <% end %>

我还会将路线修改为类似

post "shoppings/searchByDates", to: shoppings/search_by_dates, as: shoppings_search_by_dates
的内容,这样您就可以在保留驼峰式路线的同时执行蛇形操作,这样
url
参数就可以类似于
url: shoppings_search_by_dates_path


0
投票

我找到了解决方案,我在表单中更改了remote: true, with local: false

<%= form_with url: shoppings_search_by_dates_path, local: false do |form| %>

这是 search_by_dates 操作

  def search_by_dates
    @shoppings = nil
    @date_start = params[:date_start]
    @date_end = params[:date_end]
    @shoppings = Shopping.where(:date_shopping => @date_start..@date_end).order(date_shopping: :asc)
    @result_total_price = @shoppings.sum(:total_price)
    respond_to do |format|
      format.html
      format.js
    end
  end

我将 js.erb 文件重命名为 search_by_dates.js.erb

© www.soinside.com 2019 - 2024. All rights reserved.