jquery Rails错误:错误Controller::UnknownFormat缺少此请求格式和变量的模板

wd2eg0qa  于 2024-01-07  发布在  jQuery
关注(0)|答案(2)|浏览(231)

我有一个在索引页的形式,我希望该行动将由Ajax执行,在索引页显示结果.这是我在索引页的形式:

  1. <%= form_with model: @shopping, :url => {:action => "searchByDates"}, remote: true do |form| %>
  2. <div class="form-group">
  3. <%= form.label :date_start %>
  4. <%= form.date_field :date_start, attribute: 'date' %>
  5. <%= form.label :date_end %>
  6. <%= form.date_field :date_end, attribute: 'date' %>
  7. </div>
  8. <div class="form-group">
  9. <%= form.submit "Cerca", class: 'btn btn-primary' %>
  10. </div>
  11. <% end %>

字符串
这是我的控制器操作:

  1. def searchByDates
  2. @date_start = params[:date_start]
  3. @date_end = params[:date_end]
  4. @shoppings = Shopping.where(:date_shopping => @date_start..@date_end)
  5. respond_to do |format|
  6. format.html
  7. format.js
  8. end
  9. end


这是searchByDates.js.erb,在视图的文件夹中

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


我已经在routes.rb文件post 'shoppings/searchByDates'中添加了路由
我错过了什么?谢谢

jdgnovmf

jdgnovmf1#

你的表单上缺少参数format

  1. <%= form_with model: @shopping, url: { action: "searchByDates" }, format: :js, remote: true do |form| %>
  2. <div class="form-group">
  3. <%= form.label :date_start %>
  4. <%= form.date_field :date_start, attribute: 'date' %>
  5. <%= form.label :date_end %>
  6. <%= form.date_field :date_end, attribute: 'date' %>
  7. </div>
  8. <div class="form-group">
  9. <%= form.submit "Cerca", class: 'btn btn-primary' %>
  10. </div>
  11. <% end %>

字符串
另外,我会将路由修改为类似post "shoppings/searchByDates", to: shoppings/search_by_dates, as: shoppings_search_by_dates的东西,这样您就可以在保持camelCase路由的同时执行snakecased操作,这样url参数就可以类似于url: shoppings_search_by_dates_path

展开查看全部
0dxa2lsx

0dxa2lsx2#

我找到了一个解决方案,我认为问题在于它不识别remote: true选项,事实上它总是重定向到shoppings/search_by_dates URL,这就是它引发“missing template”错误的原因,它搜索了一个我没有创建的视图,因为我希望通过Ajax调用该操作。
我修改了remote:true,local:false的格式是:

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

字符串
这是search_by_dates操作

  1. def search_by_dates
  2. @shoppings = nil
  3. @date_start = params[:date_start]
  4. @date_end = params[:date_end]
  5. @shoppings = Shopping.where(:date_shopping => @date_start..@date_end).order(date_shopping: :asc)
  6. @result_total_price = @shoppings.sum(:total_price)
  7. respond_to do |format|
  8. format.html
  9. format.js
  10. end
  11. end


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

展开查看全部

相关问题