2016-04-07 43 views
0

我預先填充Rails表單中的一個值,基於表中的一個屬性。創建如果條件在Rails表單基於頁面參數

使用普通的腳手架,這對於新動作非常有用。當我回到編輯時,它預先填充一個不正確的值。爲了解決這個問題,我想在表單中創建一個if/else條件。爲了進行測試,如果我們在編輯的路線,我想的形式把「7」的整數值(測試):

<% if params[:edit] %> 
    <div class="form-group"> 
    <div class="field"> 
     <%= f.label :Game_Number %><br> 
     <%= f.number_field :category_id, :value => 7, class: "form-control" %> 
    </div> 
    </div> 
<% else %> 
    <div class="form-group"> 
    <div class="field"> 
     <%= f.label :Game_Number %><br> 
     <%= f.number_field :category_id, :value => params[:id].to_i, class: "form-control" %> 
    </div> 
    </div> 

<% end %> 

的頁面加載當這樣做,但它繼續使用<% else %>操作不正確。

而且,從我的腳手架這個編輯頁面的URL結構如下所示:

http://localhost:3000/questions/22/edit

我應該如何設計,如果條件改變編輯路線上的行爲?

回答

1

您在params中獲得actioncontroller。你可以有這樣的條件:

<% if params[:action] == 'edit' %> 
<% else %> 
<% end %> 
0
<% if @question.persisted? %> 
    <div class="form-group"> 
    <div class="field"> 
     <%= f.label :Game_Number %><br> 
     <%= f.number_field :category_id, :value => 7, class: "form-control" %> 
    </div> 
    </div> 
<% else %> 
    <div class="form-group"> 
    <div class="field"> 
     <%= f.label :Game_Number %><br> 
     <%= f.number_field :category_id, :value => params[:id].to_i, class: "form-control" %> 
    </div> 
    </div> 

<% end %> 
0

使用實例變量要做到這一點,設置在控制器中的值,而不是在看,在你的控制器:

def new 
    @object = Object.new(category_id: params[:category_id]) 
end 

def edit 
    @object = Object.find(params[:id]) 
    // puts @object.category_id => 7 or what 
end 

在您看來,只是:

<%= form_for @object do |f| %> 
    <div class="form-group"> 
     <div class="field"> 
      <%= f.label :Game_Number %><br> 
      <%= f.number_field :category_id, class: "form-control" %> 
     </div> 
     </div> 
    <% end %>