为什么Ruby on Rails的URL Helper在我的URL中放了一段时间?

fuz*_*nny 4 ruby routes ruby-on-rails url-helper

我在视图中有以下代码(RoR 4):

tbody
  - @order_submissions.each do |order_submission|
    tr
      td = order_submission.id
      td.table-actions
        span = link_to "Show", order_submissions_path(order_submission.id)
Run Code Online (Sandbox Code Playgroud)
td = order_submission.id 
Run Code Online (Sandbox Code Playgroud)

成功显示为ID号(533ab7337764690d6d000000)

但...

order_submissions_path(order_submission.id) 
Run Code Online (Sandbox Code Playgroud)

创建一个以下列形式出现的URL:

order_submissions.533ab7337764690d6d000000
Run Code Online (Sandbox Code Playgroud)

我想要它

order_submissions/533ab7337764690d6d000000
Run Code Online (Sandbox Code Playgroud)

那个时期从哪里来?

这是我的路线:

get 'order_submissions/:id'         => 'order_submissions#show'
Run Code Online (Sandbox Code Playgroud)

当我运行rake路线时,我得到:

GET    /order_submissions/:id(.:format)        order_submissions#show
Run Code Online (Sandbox Code Playgroud)

(.:格式)可能正在弄乱它,但我不知道为什么.我只是想让它在那里放一个斜线.

如果我将我的代码更改为此修复它:

 span = link_to "Show", order_submissions_path + '/' + order_submission.id
Run Code Online (Sandbox Code Playgroud)

但这是一个非常非常愚蠢的解决方法.

编辑:这是我的路线:

   get 'order_submissions'             => 'order_submissions#index'
   get 'order_submissions/new'         => 'order_submissions#new'
   post 'order_submissions'            => 'order_submissions#create'
   get 'order_submissions/:id'         => 'order_submissions#show'
   get 'order_submissions/:id/edit'    => 'order_submissions#edit'
   patch 'order_submissions/:id'       => 'order_submissions#update'
   get 'order_submissions/:id/delete'  => 'order_submissions#delete'
   delete 'order_submissions/:id'      => 'order_submissions#destroy'
Run Code Online (Sandbox Code Playgroud)

cor*_*ard 7

所述order_submissions_path(多个)指向/order_submissions.它需要两个参数,第一个是请求的格式(例如html).您的ID将被传入此参数,从而导致您看到的结果URL.

你真的想要一个奇异的路径助手,order_submission_path它接受一个I​​D作为第一个参数.