2016-04-07 13 views
0

テーブルの属性に基づいてRailsフォームに値をあらかじめ入力しています。ページ・パラメータに基づいてRailsフォームの条件を作成する場合

通常のスキャフォールドを使用すると、新しい動作に効果的です。私が編集に戻るとき、それは間違った値をあらかじめ設定します。これを修正するには、フォームにif/else条件を作成します。そうするときに、ページのロード

<% 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 %> 

、それが使い続け:我々は編集ルートにある場合、テストのために、私は、フォームが「7」(テストなど)の整数値を入れたいです<% else %>アクションが間違っています。

また、私の足場からこの編集ページのURL構造がそうのようなものです:

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

条件は編集ルート上の動作を変更する場合はどのように私はそのフレームべきですか?

答えて

1

paramsにはactioncontrollerが表示されます。あなたは、このような条件を持つことができます。ただ、

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 

あなたのビューでは:これを行うには、お使いのコントローラで、コントローラではなく、ビューに値を設定する

<% 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

使用インスタンス変数を:

<%= 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 %> 
関連する問題