2017-04-19 53 views
0

我有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

嘗試檢查enum值。 「@ post.video?」是否返回「true」? – Pavan

+0

我實際上在其位置使用了另一個布爾值。是渲染模板的正確方法嗎? – danielbker

+0

你有沒有試過渲染文件? – Pavan

回答

1

只是簡單的渲染你的作品,你可以使用下面的代碼:

與HTML文件名只呈現,如果文件是在同一個控制器查看

if @post.video? 
    render 'video_show' 
else 
    render 'artical_show' 
end 
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