Я пытаюсь реализовать жемчужину Friendly_Id в своем приложении 4 rails и попал в блокпост.Friendly_Id: id - slug, но url по-прежнему отображает атрибут id объекта (? Id =)
Драгоценный камень работает, но адрес еще не очень красив. Это выглядит следующим образом:
http://www.example.com/project/featured?id=project-name
Жемчужиной работает, так как параметр ID теперь слизняк, но я понятия не имею, как удалить «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]
Я также упоминаться предыдущее приложение шахты работает Friendly_Id в рельсах 3. Это, кажется, не имеют этой проблемы ... не могу вспомнить, если я просто отсутствует шаг.
Любая помощь была бы принята с благодарностью. Ура!
Update:
После подстановки:
project_featured_path(:id => project.slug)
для pearlshareteam ответа:
project_featured_path(project)
мой URL выглядит немного лучше, но все еще не работает. Это выглядит следующим образом:
http://example.com/project/featured.project-one
есть период вместо косой черты. При тестировании я обнаружил, что если бы я просто заменил точку косой чертой, на самом деле была создана правильная страница.
Это просто проблема с форматированием link_to?
Спасибо за быстрый ответ! – Smashdelight