【问题标题】:Ruby on Rails: Passing the selected value of a drop down menu to a functionRuby on Rails:将下拉菜单的选定值传递给函数
【发布时间】:2013-05-30 15:05:28
【问题描述】:

我正在使用设计,我试图将下拉菜单的选定值传递给函数,但它不起作用。数据存储在名为 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 %>

【问题讨论】:

  • 那是代码的精确副本吗?您在第一个结束后缺少 %>,在第二个 if 之前缺少
  • 你能发布html的输出吗?我需要来自f.select 的输出html。顺便说一句,end if 改成elsif ? rails if else statement

标签: ruby-on-rails ruby forms devise


【解决方案1】:

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

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

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

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

  1. 使用所选角色发布表单并重新呈现表单。该过程类似于重新渲染表单,例如验证错误。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    相关资源
    最近更新 更多