Ruby on rails Rails 4更改:url/:id参数的更好方法
我花了几个小时试图解决这个问题,但在Rails4中找不到答案!将: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设置
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;)
结束
结束
执行查找的代码是什么样子的?你访问的网址是什么?这里没有足够的信息来回答这个问题。