【问题标题】:No Route Matching in rails 6 for multiple route parametersrails 6中没有针对多个路线参数的路线匹配
【发布时间】:2020-11-16 06:20:24
【问题描述】:

routes.rb:

get '/get_text_by_tablenum/:filename_id/:tablenum_id', to: 'dashboard#get_text_by_tablenum'

ajax:

$.ajax({
      dataType: "json",
      cache: false,
      url: '/get_text_by_tablenum/' + filename + '/' + id_value_string,
      timeout: 5000,
      error: function(XMLHttpRequest, errorTextStatus, error) {
       alert("Failed to submit : " + errorTextStatus + " ;" + error);

      },
      success: function(data) {
        console.log(data)


      }

耙路线:

GET /get_text_by_tablenum/:filename_id/:tablenum_id(.:format)  dashboard#get_text_by_tablenum

错误信息:

No route matches [GET] "/get_text_by_tablenum/MPLX_1Q20_Conf_Call_Slides.pdf/12"

对我收到此错误消息的原因有何想法?

【问题讨论】:

  • 奇怪,我只需要颠倒顺序 :filename_id 和 :tablenum_id 就可以了。

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


【解决方案1】:

很简单,您的资源必须位于 URL 的末尾。 MPLX_1Q20_Conf_Call_Slides.pdf 是文件而不是路径。

示例

get "path/to/file.pdf", to: "my_controller#action"`

点已被删除,因为它用作格式化路线的分隔符。如果您需要在 :filename 中使用点,请添加一个约束。 constraints: { filename: /.*/ }

现在您的路线如下所示:

  get 'files/:filename', to: "files#index", constraints: { filename: /.*/ }

然后在浏览器中: http://localhost:3000/files/MPLX_1Q20_Conf_Call_Slides.pdf

files_controller.rb

app/controllers/files_controller.rb
    1: class FilesController < ApplicationController
    2:   def index
    3:     byebug
=>  4:     filename = params[:filename]
    5:     send_file("#{Rails.root}/private/#{filename}",
    6:           :filename => "#{filename}",
    7:           :type => "application/pdf", #for example if pdf
    8:           :disposition => 'inline')
    9:   end
   10: end
(byebug) params
<ActionController::Parameters {"controller"=>"files", "action"=>"index", "filename"=>"MPLX_1Q20_Conf_Call_Slides.pdf"} permitted: false>

【讨论】:

  • 感谢您的回答。这就是解决方案。相关,知道为什么 .pdf 扩展名会从控制器内的“params[:filename_id]”中删除吗?
  • 点已被删除,因为它用作格式化路线的分隔符。如果您需要在 :filename 中使用点,请添加一个约束。约束:{ 文件名:/.*/ }
猜你喜欢
  • 2012-10-11
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多