2013-05-05 68 views
0

我正在寫這個問題,因爲我沒有在StackOverflow和/或任何相關的論壇中找到任何解決方案。我的問題基本上是這樣。Rails路線。而不是/

我在我的Rails項目中添加了一個名爲「news」的表。該表在我的Mysql中正好以名稱「news」創建。

按照這些步驟,我遇到了一個連接到「新聞」重定向到「news.1」而不是「news/1」的情況。

我的routes.rb

match "news" => 'homepage#news' 
match "news/:id" => 'homepage#news_details' 

我控制器

def news 
@news = News.all 

respond_to do |format| 
    format.html { render layout: "news" } # index.html.erb 
    format.json { render json: @news } 
end 
end 

def news_details 
@news = News.find(params[:id]) 

respond_to do |format| 
    format.html { render layout: "news" } # index.html.erb 
    format.json { render json: @users } 
end 
end 

在news.html.erb

<div class="postDetails"> 
<a href="trainers-single.html" class="postTitle"><%= news.title %></a> 
<p><%= truncate news.details, :length => 90 %></p> 
<%= link_to 'MORE INFO', news, :class => "button-small-theme rounded3" %> 
</div> 

在news.html.erb的的link_to更多的信息,新聞重定向我去「news.1」而不是「news/1」

謝謝您的閱讀。

回答

1

請嘗試將路線作爲命名路線進行訪問。 如果在控制檯中運行rake routes,請查看它爲該路線分配的名稱。如果還沒有,那麼你的routes.rb改變

match "news/:id", to: "homepage#news_details", as: "show_news" 

然後在您的視圖中,使用

<%= link_to "MORE INFO", show_news_path(news), class: "button-small-theme rounded3" %> 

看看是否有幫助。 如果不是這樣,可能值得嘗試以類似於更多方式設置您的應用程序。您正在通過HomepageController訪問您的新聞資源,但這樣可以更好地使用專門的NewsController,前提是您定義了兩種可自動爲您提供軌道的路線。我會更傾向於:

  • 創建一個新的控制器 - NewsController
  • 添加resources :news到routes.rb中

在您的新聞控制器,那麼你應該有這樣的:

class NewsController < ApplicationController 

    def index 
     @news = News.all 
     respond_to do |format| 
      format.html { render layout: "news" } 
      format.json { render json: @news } 
     end 
    end  

    def show 
     @news = News.find(params[:id]) 
     respond_to do |format| 
      format.html { render layout: "news" } 
      format.json { render json: @news } 
     end 
    end 

end 

然後你只需要將你的視圖文件移動到news文件夾而不是dashboard文件夾,它就是sh開始工作。然後在您看來,您的鏈接將與您現在的鏈接相同,但它實際上應該可以工作:)

+0

您的第一個解決方案解決了所有問題。非常感謝!你應得的。 – Yagiz 2013-05-05 21:17:13

+0

啊真棒:)很高興它的工作。我總是討厭被卡住,不知道爲什麼它不工作:( – PaReeOhNos 2013-05-05 21:25:02