我需要爲我的博客帖子呈現不同的展示頁面。用紅寶石在軌道上呈現不同的展示頁面
我有3個不同的類別:主題,片段,項目。
每篇博文都必須與這三類相關。
如果有人點擊帖子(假設相關類別是片段),它將顯示在不同的節目中......等等。其他類別也是如此。
條件語句可能如何。
我需要爲我的博客帖子呈現不同的展示頁面。用紅寶石在軌道上呈現不同的展示頁面
我有3個不同的類別:主題,片段,項目。
每篇博文都必須與這三類相關。
如果有人點擊帖子(假設相關類別是片段),它將顯示在不同的節目中......等等。其他類別也是如此。
條件語句可能如何。
我將與此開始,然後重構以避免重複
categories_controller.rb
def themes
#@posts = Post.where(category_id: 1)
...
render layout: themes
end
def snippets
#@posts = Post.where(category_id: 2)
...
render layout: snippets
end
def projects
#@posts = Post.where(category_id: 3)
...
render layout: snippets
end
只是一個表演的方法,你可以有條件地呈現不同的看法和簡單的呈現給你,你的作品可以使用下面的代碼:
只需使用HTML文件名進行渲染,如果文件在同一控制器的視圖中
if @post.theme?
render 'themes'
elsif @post.snippet?
render 'snippets'
else
render 'projects'
end
你可以做這樣的事情:
型號/ post.rb
def category
@category ||= ... #returns category name
end
控制器/ post_controller.rb
def show
@post = Post.find(id)
@category = @post.category
...
end
層的意見/職位/ show.html.erb
...
<%= render "types/#{@category}" %>
...
您也可以從控制器渲染指定的模板,如果你不具備的類別
您可以使用軌道部分來實現這個公共部分:
更多地瞭解局部參考Rails Partial
你可以創建部分爲類別如下:
應用/視圖/類別/ _themes.html.erb
應用/視圖/類別/ _snippets.html.erb
應用/視圖/類別/ _projects.html。ERB
在類別的節目頁面,您可以如下
class CategoriesController < ApplicationController
...
def show
...
render params[:category]
end
...
end
現在當你調用顯示頁面傳遞一個PARAM類別,它表示要顯示
類的類型修改顯示頁面如果你想顯示類別片段,那麼參數將是params [:category] ='snippets'這將查找部分內部類別視圖。
you can make routes like:
resources :posts, except:[:show]
get 'posts/:id/cat/:category' , to:'posts#show', as: :show
你必須創建對部分類別如下:
應用程序/視圖/職位/ _themes.html.erb
應用程序/視圖/職位/ _snippets.html。 ERB
應用程序/視圖/職位/ _projects.html.erb
然後在控制器的顯示動作。
controllers/posts_controller.rb
def show
@post = Post.find(params[:id])
@category = params[:category]
...
end
然後在顯示頁面中呈現該類別。
的意見/職位/ show.html.erb
...
<%= render '#{@category}'%>