2016-04-07 2 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

Вы получаете action и controller в своем params. Вы можете иметь такое условие:

<% 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 %> 
Смежные вопросы