2011-11-08 43 views
0

我想將我的項目的根目錄路由到書籍#show action。並且該書的ID是動態的。Rails 3 route - > to #show。默認ID如果爲零?

但我不希望它影響標準顯示操作。

即...(此代碼不能當然的工作:)

def show 
    if @book.id is present? 
     @book = Book.find(params[:id])      
    else 
     @book = Book.first 
    end 
    end 

我希望這是有道理的。

基本上,我希望能夠通過其ID來查看任何書籍。但是,如果沒有指定Id,請將其默認爲Book.first。

在此先感謝...

回答

3

您近了。嘗試使用params[:id].present?作爲你的if條件,它應該得到你想要的。

您需要在您的routes.rb中使用root :to => "books#show"路線才能使其工作。

然而,從透明度的角度來看,我只是有兩個動作:您的正常顯示,和home行動,其內容是這樣的:

def home 
    @book = Book.first 
    render :action => "show" 
end 

def show 
    @book = Book.find(params[:id]) 
end 

然後,在你的routes.rb:

root :to => "books#home" 

這將讓你保持兩個行動乾淨,更直接地傳達這些行動的意圖。

+0

刪除我的答案,因爲這種方法更乾淨,更可讀:) –

+0

謝謝克里斯!該代碼的工作。但是把它們分開,這絕對是完美的感覺......再次感謝。 – Adam

+0

對不起。它讓你等待10分鐘才能接受。所以我非常快速地執行了一項任務。完美的答案。再次感謝你的幫助... – Adam