根据select标签值渲染视图 - 简单

时间:2012-12-06 12:20:30

标签: ruby-on-rails ruby-on-rails-3

我有这样的观点:

<h2>Select the type of Project</h2>
<%= form_tag('/select') do -%>
<label>Select A Type Of Project</label><%= select_tag "project_type", options_from_collection_for_select(ProjectType.all, "name", "name"),:prompt => "Select Project Type" %> 
<%= submit_tag 'Next' %>
<% end -%>

这里我只是选择一个特定类型的项目并提交。

HTML输出是:

<select id="project_type" name="project_type">
<option value="">Select Project Type</option>
<option value="Sales">Sales</option>
</select>

现在,我想根据所选项目的类型呈现特定模板。 如果值=“Sales”,我想呈现模板sales.html.erb。

我应该在名为select的控制器操作中添加什么。仪式现在是空的。

谢谢:)

2 个答案:

答案 0 :(得分:2)

像这样的东西

def select
  view_to_render = case params[:project_type]
  when 'name1'
      #do smth
      'view_name'
  else
      # do smth else
      'another_view'
  end   
  respond_to do |format|
    format.html { render view_to_render }
  end
end

答案 1 :(得分:2)

根据您的操作添加此

template = params[:project_type] || 'new'
respond_to do |format|
  format.html { render template }
  format.json { render json: @projects }
end

'new'方法被假定为默认方法