Rails 4 - 路由中的哈希被错误地渲染

时间:2014-08-29 20:37:24

标签: ruby-on-rails ruby ruby-on-rails-4 routes

我在routes.rb中有这行代码

get 'products#:id' => 'products#index', as: :products_hash

它可以工作,但问题是哈希符号(#)被渲染为%23。

http://localhost:3000/products%2368

这应该是:

http://localhost:3000/products#68

我怎样才能做到这一点?谢谢!

1 个答案:

答案 0 :(得分:0)

<强>滑轨

我觉得你错过了Rails' routing system的观点,那就是你打算在对象周围构建它(因此你为什么要调用resources :controller等)。

虽然我不明白为什么你要定义你的路线,但我会给你一些想法。 Rails中的路由有"wildcard"设置,允许您定义&amp;将参数传递给您的应用程序超出典型的“CRUD”应用程序的范围:

#config/routes.rb
get 'products#*id' => 'products#index', as: :products_hash

这使您能够将请求发送到以下路由:

<%= link_to "Product", products_hash_path("68") %>

然后你就可以在控制器中调用参数:

#app/controllers/products_controller.rb
class ProductsController < ApplicationController
   def index
      id = params[:id]
   end
end
相关问题