2013-05-30 49 views
0

我使用的設計,我試圖通過一個下拉菜單功能的設定值的,但它不工作。數據存儲在名爲user的模型中。Ruby on Rails的:下拉菜單中選擇的值傳遞給函數

<%= 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 %> 
+0

是一個確切的代碼副本嗎?你在第一個結束後缺少%>,並且在第二個結束之前缺少<%。 – RadBrad

+0

你可以發佈HTML的輸出?我需要從'f.select'輸出HTML。順便說一句,'結束if'變成'elsif'? [鋼軌如果else語句(http://railsguru.org/tag/if-else/) –

回答

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來檢測,然後通過顯示和隱藏字段更新的形式。

相關問題