在rails 4.2应用程序中,虚荣URL用于某些模型,并在控制器中调用:
@staticpage = Staticpage.find_by_slug!(params[:id])
但是,创建link_to的各种尝试都失败了。例如:
<%= link_to 'this', staticpage_url(33, locale: I18n.locale.to_s) %>
因为这会生成一个查找id的链接,而不是slug。
如何在确保语言环境得到尊重的同时在link_to语句中调用slug? slug未本地化
答案 0 :(得分:1)
您最好使用friendly_id
gem:
#app/models/staticpage.rb
class Staticpage < ActiveRecord::Base
extend FriendlyId
friendly_id :param, use: [:finders, :slugged]
end
这会自动将slug
插入link_to
和path helper
方法,覆盖.find
以使用slug
...
<% Staticpage.all.each do |page| %>
<%= link_to "x", page %>
<% end %>
def show
@page = Staticpage.find params[:id] #-> finds by slug
end