我想将项目的根目录转到书籍#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。
提前致谢...
答案 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"
这将让您保持两个动作清洁,并更直接地传达这些动作的意图。