2009-02-02 135 views
2

我想根据选择框中的选择来呈现部分。这看起来微不足道,但我找不到一个例子。更改选择框更改的布局

非常感谢所有帮助。

问候

+0

这取决于你想如何确定渲染的部分,或换句话说,你需要确定当你“选择”某件事情时会发生什么。你的意思是选择一些东西,点击一个按钮并被重定向,或者在选择某些东西时通过ajax在线显示某些内容? – 2009-02-02 12:54:13

回答

2

如果你只是想呈现局部的形式提交到页面上,

<%= render :partial => params[:your_selectbox_value_matching_the_partial_you_want] %> 

所以,如果你有一个像

<select name='the_partial'> 
    <input value="partial1">Some Partial</input> 
    <input value="partial2">Another Partial</input> 
</select> 

你需要渲染

<%= render :partial => params[:the_partial] %> 

假设你有_partial1.html.erb和partial2.html.erb在您的视图文件夹

1

我的是这样开始:

app/views/_layout_selector.html.erb: 
<form action="<%= request.request_uri -%>"> 
    <select name='layout'> 
    <input value="blue">Blue</input> 
    <input value="pink">Pink</input> 
    <input value="green">Green</input> 
    </select> 
</form> 

app/views/layouts/blue.html.erb: 
<html> 
    ... 
    <%= render :partial => '/layout_selector' %> 
    ... 
</html> 

(/app/views/layouts/pink.html.erb and green.html.erb similar) 

app/controllers/application.rb: 
class ApplicationController < ActionController::Base 
    DEFAULT_LAYOUT = 'blue' 
    layout :pick_layout 
    ... 
    private 
    def pick_layout 
    params[:layout] || DEFAULT 
    end 
end