1

Я пытаюсь реализовать жемчужину 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?

ответ

0

Ответ зависит от ваших маршрутов, так что может быть удобно разместить их, как хорошо, но если они выглядят так:

resources :projects do 
    member do 
    get :featured 
    end 
end 

рискну предположить, что синтаксис вы хотите:

project_featured_path(project) 

Я выхожу из friendly_id source, и кажется, что friendly_id переопределяет метод активной записи 'to_param'.Это вызвано помощниками rails path/url для создания URL-адресов из AR-объектов, поэтому он будет строить URL-адрес с помощью URL-адреса.

Также см. Методы поиска в source, где он выглядит как дружественный идентификатор, переопределяет метод «Найти». Сначала он ищет дружественный идентификатор, и если это не удается, оно возвращается к поиску его традиционным идентификатором.

Я думаю, что это должно помочь или, надеюсь, быть подсказкой в ​​правильном направлении.

+0

Спасибо за быстрый ответ! – Smashdelight

 Смежные вопросы

  • Нет связанных вопросов^_^