1

我試圖實現Friendly_Id寶石在我的軌道4應用程序,都創下了路障。Friendly_Id:id爲蛞蝓,但網址仍然顯示對象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] 

我也引用我的一個以前的應用程序在軌運行3這Friendly_Id似乎不存在這個問題......不記得,如果我只是失蹤一步。

任何幫助將不勝感激。乾杯!

更新:

代後:

project_featured_path(:id => project.slug)

pearlshareteam答案:

project_featured_path(project)

我的URL看起來更好一點,但仍然沒有工作。它看起來像這樣:

http://example.com/project/featured.project-one

有一段時間,而不是斜線。在測試中,我發現如果我用斜線代替點,實際上會生成正確的頁面。

這只是與我的link_to格式問題?

回答

0

問題的答案取決於你的路由所以它可能是方便張貼他們很好,但如果他們是這樣的:

project_featured_path(project) 

resources :projects do 
    member do 
    get :featured 
    end 
end 

我會是你想要的語法是大膽的猜測

我簽了friendly_id source,似乎friendly_id覆蓋活動記錄「to_param」的方法。這由rails路徑/ url幫助器調用來構造來自AR對象的URL,因此將使用url slug構造URL。

另請參閱source中的取景器方法,它看上去像友好的ID重寫'find'方法。它首先尋找一個友好的身份證,如果失敗了,它會回落到傳統的身份證查找。

我認爲這應該有助於或有希望成爲正確方向的暗示。

+0

感謝您的快速回復! – Smashdelight