2016-12-14 41 views
0

我有這種形式。當對象具有性別值時,我想將性別字段更改爲隱藏字段,因此用戶不需要查看它。做這個的最好方式是什麼?Rails:當值填充時隱藏表格字段

<%= form_for(object ,:html => {:class => "form-horizontal"}) do |f| %> 
     <div class="form-group row"> 
      <%= f.label(:first_name, :class => "control-label col-xs-4 input-lg") %> 

      <div class="form-inline col-xs-8"> 
       <div class=""> 
        <%= f.text_field(:first_name,{class: "form-control input-lg"}) %> 
       </div> 
      </div> 
     </div> 

     <div class="form-group row"> 
      <%= f.label(:last_name, :class => "control-label col-xs-4 input-lg") %> 

      <div class="form-inline col-xs-8"> 
       <div class=""> 
        <%= f.text_field(:last_name,{class: "form-control input-lg"}) %> 
       </div> 
      </div> 
     </div> 
    <div class="form-group row"> 
      <%= f.label(:gender, :class => "control-label col-xs-4 input-lg") %> 
      <div class="col-xs-8"> 
      <%= f.select(:gender, Dropdown.gender,{:prompt =>"Please Choose"},{class: "form-control input-lg"}) %> 
      </div> 
     </div> 
      <div class="col-xs-8 col-xs-offset-4"> 
       <%= f.submit object.submit_button_name, {class: 'btn btn-lg'} %> 
      </div> 

    <% end %> 
+0

你的控制器在保存後應該做些什麼?我敢打賭,這是問題所在。保存後你應該有一個redirect_to。 –

+0

這個問題與控制器無關,只是視圖,但是謝謝 – user2012677

回答

1

你可以簡單地使用if語句來渲染基於性別是否設置與否不同的字段類型:

<% if object.gender %> 
    <%= f.hidden_field(:gender) 
    <% else %> 
    <div class="form-group row"> 
    <%= f.label(:gender, :class => "control-label col-xs-4 input-lg") %> 
    <div class="col-xs-8"> 
     <%= f.select(:gender, Dropdown.gender,{:prompt =>"Please Choose"},{class: "form-control input-lg"}) %> 
    </div> 
    </div> 
    <% end %> 
+0

很確定這會顯示HTML,因爲它不是if語句的一部分。我將如何解決這個問題? – user2012677

0

相反hidding的話,最好還是不渲染它。試試看這個:

<% unless object.gender != nil %> 
<div class="form-group row"> 
    <%= f.label(:gender, :class => "control-label col-xs-4 input-lg") %> 
<div class="col-xs-8"> 
    <%= f.select(:gender, Dropdown.gender,{:prompt =>"Please Choose"},{class: "form-control input-lg"}) %> 
</div> 
</div> 
<% end %> 
+0

上面的代碼是否也顯示HTML,因爲它不是ruby的一部分(<%= %>? – user2012677

+0

它在ruby語句中,如果語句返回true,它將呈現HTML中的性別部分,如果語句返回false, 't render it,so also not in HTML。 –

+0

如果我沒有使用隱藏的方式呈現它,值會丟失,並且我得到驗證錯誤,使用if else語句,但是建議不錯。謝謝 – user2012677

相關問題