2
如何允許用戶使用選擇菜單在相同內容的不同視圖之間切換。例如看看http://railscasts.com/的右側。您可以在列表視圖,表格視圖和網格縮略圖視圖之間切換。什麼是實現這個目標的好方法?導軌:允許用戶使用選擇在不同視圖之間切換
如何允許用戶使用選擇菜單在相同內容的不同視圖之間切換。例如看看http://railscasts.com/的右側。您可以在列表視圖,表格視圖和網格縮略圖視圖之間切換。什麼是實現這個目標的好方法?導軌:允許用戶使用選擇在不同視圖之間切換
您可以爲每個視圖設置一個部分,並使用session
來存儲首選項,或者僅使用params
。
def index
# ... code here
@partial = params[:view] || "default" # "grid", "list", etc.
end
在index.html.erb
:
<%= render @partial %>
然後,你將節省每個視圖在控制器的視圖文件夾中,例如局部_grid.html.erb
,_list.html.erb
,並_default.html.erb
編輯
在回答關於這個(今五歲)的答案評論,我撤銷/修改我原來的建議。將未驗證的參數傳遞給render
永遠不是一個好主意,因爲它可能會暴露文件系統中的任意數據。反而會推薦白名單方法:
def index
@partial = whitelisted_partial || 'default'
end
def whitelisted_partial
%w(grid list).detect { |str| str == params[:view] }
end
以及向更多評論直接回應:
render partial: @partial, locals: { ... }
,如果我想通過一個本地的部分是什麼? – Manos
由於這個非常古老的問題復活,我廢除了我原來的建議。永遠不要接受param作爲'render'的參數,或者使用白名單來實現它。 –
謝謝你的快速和陳述性的迴應。 – Manos