Ruby on rails Rails 4更改:url/:id参数的更好方法

Ruby on rails Rails 4更改:url/:id参数的更好方法,ruby-on-rails,Ruby On Rails,我花了几个小时试图解决这个问题,但在Rails4中找不到答案!将:id参数更改为其他参数的更好方法是什么?我正在努力 resources :articles, param: :article_title 但它不起作用!我收到一条消息“找不到没有ID的文章”。。。 谢谢 您是否试图使您的URL看起来更像“/articles/my article title”而不是“/articles/456”?有很多方法可以做到这一点,但最干净的方法是使用。路线 你想创造什么 与Rails默认使用的标准id设置

我花了几个小时试图解决这个问题,但在Rails4中找不到答案!将:id参数更改为其他参数的更好方法是什么?我正在努力

resources :articles, param: :article_title
但它不起作用!我收到一条消息“找不到没有ID的文章”。。。
谢谢

您是否试图使您的URL看起来更像“/articles/my article title”而不是“/articles/456”?有很多方法可以做到这一点,但最干净的方法是使用。

路线

你想创造什么

与Rails默认使用的标准
id
设置不同,这些设置基本上允许您在应用程序中包括:

--

鼻涕虫

设置此设置的诀窍是设置ActiveRecord
。find
方法可查找比标准
id
更多的列(这是默认值)

正如Alex p所提到的,您需要使用一个名为gem的工具。在这个主题上有一个很棒的
RailsCast

这里的诀窍是承认您使用的
路由仍然会将
参数[:id]
值传递给您的应用程序;重要的是如何管理该值的使用/处理

通常,您将使用
.find
ActiveRecord方法查找
id
中的
params[:id]
friendly_id
实际上也将其更改为搜索
slug
列-允许您使用
。find
查找slug:

#config/routes.rb
resources :articles #-> domain.com/articles/:id

#app/models/article.rb
Class Article < ActiveRecord::Base
   extend FriendlyID
   friendly_id :name, use: [:slugged, :finders]
end

#app/controllers/articles_controller.rb
Class ArticlesController < ApplicationController
   def show
      @article = Article.find params[:id] -> will look up the slug ;)
   end
end
#config/routes.rb
参考资料:articles#->domain.com/articles/:id
#app/models/article.rb
类文章将查找slug;)
结束
结束

执行查找的代码是什么样子的?你访问的网址是什么?这里没有足够的信息来回答这个问题。