我有一个Post
模型,帖子可以是视频帖子(带有YouTube链接)或文章帖子(带正文)。
有一个枚举post_type
,用于确定帖子的类型。
在我的show.html.erb
视图中,我想根据所显示的帖子类型显示不同的模板文件。
文章和视频的整个html.erb
文件内容不同。
在我的控制器中,我希望能够检查帖子类型并相应地呈现不同的文件。
if @post.video?
//render video show view `video_show.html.erb`
else
// render article show view `article_show.html.erb`
end
我已经尝试render template: 'posts/video'
呈现我创建的新posts/video.html.erb
文件,但根本不起作用。
最好的方法是什么?我想遵循惯例而不是使用粗糙的部分和简单的if-else来在部分之间切换。
答案 0 :(得分:1)
只需简单的渲染就可以使用,您可以使用下面的代码:
如果文件位于同一控制器的视图中,则使用HTML文件名进行渲染
if @post.video?
render 'video_show'
else
render 'artical_show'
end
答案 1 :(得分:0)
render
仅使用相对文件名
if @post.video?
# with a file name posts/video_show.html.erb
render 'posts/video_show'
else
# with a file name posts/article_show.html.erb
render 'posts/article_show'
end