2011-11-08 19 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