Ruby: используйте f.select или f.text_field, если в f.select выбрано «other» - PullRequest
0 голосов
/ 30 марта 2012

Мне нужен ruby, чтобы получить значение из поля f.select или f.text_, если в форме выбора выбрано значение «other». как это возможно? в представлении:

<div class="field">
  Parent</br>
  <% f.label :parent1 %>
  <%= select("jobs","parent1_id",["None","8.5x11","shells"]) %>
  Other:
  <% f.label :parent2 %>
  <%= text_field("jobs","parent2_id") %>
</div>

в контроллере:

def create
  @job = Job.new(params[:job])

    if params[:parent1_id] == "None" #params[:option1_id].nil? #params.has_key?(:option1_id) #Take your pick
        @job.parent = params[:parent2_id]
    else
        @job.parent = params[:parent1_id]
    end

  respond_to do |format|

    if @job.save
      format.html { redirect_to @job, :notice => 'Job was successfully created.' }
      format.json { render :json => @job, :status => :created, :location => @job }
    else
      format.html { render :action => "new" }
      format.json { render :json => @job.errors, :status => :unprocessable_entity }
    end
  end
end

1 Ответ

0 голосов
/ 30 марта 2012

Простейшим способом решения этой проблемы было бы использование {:include_blank => "none"} в выборе и проверка, является ли его параметр нулевым в контроллере, если он затем использует другой параметр.


Как я лично это использовал:

<%= form_for @thing, :html => { :class => 'form-horizontal' } do |f| %>
  .....
<div class="field">
  <%= f.label :name %><br />
  <%= select_tag "count", "<option>None</option><option>8.5x11</option><option>shells</option>".html_safe %>
</div>
<div class="field">
  <%= f.label :name %><br />
  <%= text_field_tag "users" %>
</div>
  ........
    <div class="form-actions">
      <%= f.submit "Submit", :class => 'btn btn-primary' %>
  .......
    </div>
<% end %>

Примечание collection_select - это вариант выбора, в котором я передаю предметы другой модели.

В контроллере:

def create
.......
  if params[:option1_id] == "" #params[:option1_id].nil? #params.has_key?(:option1_id) #Take your pick
    @thing.attribute = params[:option2_id]
  else
    @thing.attribute = params[:option1_id]
  else
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...