0

我正在使用设计,我正在尝试将下拉菜单的选定值传递给函数,但它不起作用。数据存储在名为 user 的模型中。

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<%= f.select :role, options_for_select([["Job Seeker", "candidate"], ["Employer",  "employer"], ["Recruiter", "recruiter"]]) %>

<% if params[:role] == "candidate" %>
<div><%= f.label :travel %><br />
<%= f.text_field :travel %></div> 
<%  end 
if params[:role] == "employer" || params[:role] == "recruiter"
%>
<div><%= f.label :company %><br />
<%= f.text_field :company %></div>
<% end %>
<% end %>
4

1 回答 1

0

在我看来,您的条件句应该使用资源对象,例如<% if resource.role == "employer" %>

您可能希望将当前值resource.role作为参数传递options_for_select

options_for_select([["Job Seeker", "candidate"], ["Employer",  "employer"], ["Recruiter", "recruiter"]], resource.role)

在我看来,您希望用户选择一个角色,然后根据所选角色显示不同的字段。如我错了请纠正我。从您发布的代码部分中,无法准确判断您的方法是什么。有几种方法可以解决这个问题,包括:

  1. 使用所选角色发布表单并重新呈现表单。该过程类似于在出现验证错误时重新呈现表单。

  2. 将表单分解为多个阶段

  3. 使用 javascript 来检测 select 的值何时发生变化,然后通过显示和隐藏字段来更新表单。

于 2013-05-30T16:21:53.673 回答