Rails 3路线 - >显示。默认ID,如果为零?

时间:2011-11-08 00:57:56

标签: ruby-on-rails ruby-on-rails-3

我想将项目的根目录转到书籍#show action。并且书的ID是动态的。

但我不希望它影响标准节目动作。

即......(此代码当然不起作用:)

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

我希望这是有道理的。

基本上,我希望能够通过其ID查看任何书籍。但是如果没有指定Id,请将其默认为Book.first。

提前致谢...

1 个答案:

答案 0 :(得分: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"

这将让您保持两个动作清洁,并更直接地传达这些动作的意图。