Parameters 友好的\u Id:Id是slug,但url仍然显示对象Id属性(?Id=)
我试图在rails 4应用程序中实现友好的_Id gem,但遇到了一个障碍 gem正在运行,但是url仍然不太好。看起来是这样的:Parameters 友好的\u Id:Id是slug,但url仍然显示对象Id属性(?Id=),parameters,ruby-on-rails-4,ruby-on-rails-plugins,friendly-id,Parameters,Ruby On Rails 4,Ruby On Rails Plugins,Friendly Id,我试图在rails 4应用程序中实现友好的_Id gem,但遇到了一个障碍 gem正在运行,但是url仍然不太好。看起来是这样的: resources :projects do member do get :featured end end gem正在工作,因为id参数现在是slug,但是我不知道如何删除“?id=”并用斜杠替换它?可能吗?我漏了一步吗 控制器: def featured @project = Project.friendly.find(param
resources :projects do
member do
get :featured
end
end
gem正在工作,因为id参数现在是slug,但是我不知道如何删除“?id=”并用斜杠替换它?可能吗?我漏了一步吗
控制器:
def featured
@project = Project.friendly.find(params[:id])
end
extend FriendlyId
friendly_id :title, use: :slugged
<% @projects.each do |project| %>
<%= link_to project_featured_path(:id => project.slug) do %>
<%= project.title %>
<% end %>
<% end %>
get "project/featured"
match 'project' => 'project#index', :as => :project, via: [:get, :post]
resources :projects do
member do
get :featured
end
end
match ':controller(/:action(/:id))(.:format)', via: [:get, :post]
型号:
def featured
@project = Project.friendly.find(params[:id])
end
extend FriendlyId
friendly_id :title, use: :slugged
<% @projects.each do |project| %>
<%= link_to project_featured_path(:id => project.slug) do %>
<%= project.title %>
<% end %>
<% end %>
get "project/featured"
match 'project' => 'project#index', :as => :project, via: [:get, :post]
resources :projects do
member do
get :featured
end
end
match ':controller(/:action(/:id))(.:format)', via: [:get, :post]
查看:
def featured
@project = Project.friendly.find(params[:id])
end
extend FriendlyId
friendly_id :title, use: :slugged
<% @projects.each do |project| %>
<%= link_to project_featured_path(:id => project.slug) do %>
<%= project.title %>
<% end %>
<% end %>
get "project/featured"
match 'project' => 'project#index', :as => :project, via: [:get, :post]
resources :projects do
member do
get :featured
end
end
match ':controller(/:action(/:id))(.:format)', via: [:get, :post]
我还引用了我以前在rails 3中运行Friendly_Id的应用程序。它似乎没有这个问题。。。不记得我是不是错过了一步
任何帮助都将不胜感激。干杯
更新:
def featured
@project = Project.friendly.find(params[:id])
end
extend FriendlyId
friendly_id :title, use: :slugged
<% @projects.each do |project| %>
<%= link_to project_featured_path(:id => project.slug) do %>
<%= project.title %>
<% end %>
<% end %>
get "project/featured"
match 'project' => 'project#index', :as => :project, via: [:get, :post]
resources :projects do
member do
get :featured
end
end
match ':controller(/:action(/:id))(.:format)', via: [:get, :post]
替换后:
project\u特色路径(:id=>project.slug)
答复如下:
project\u特色路径(project)
我的url看起来好一点,但仍然不起作用。看起来是这样的:
resources :projects do
member do
get :featured
end
end
有一个句号而不是斜杠。在测试中,我发现如果我只是用斜杠替换了点,那么实际上就生成了正确的页面
这只是我的链接格式有问题吗?答案取决于您的路线,因此发布它们可能也很方便,但如果它们看起来像这样:
resources :projects do
member do
get :featured
end
end
我猜您想要的语法是:
project_featured_path(project)
我签出了friendly_id,friendly_id似乎覆盖了活动记录“to_param”方法。rails路径/url帮助程序调用它来从AR对象构造url,因此将使用url slug构造url
另请参阅中的finder方法,其中友好ID似乎覆盖了“find”方法。它首先寻找一个友好的id,如果失败,它会返回到传统的id来查找
我认为这应该会有帮助,或者希望是一个正确方向的提示。谢谢您的快速回复!