2016-09-28 5 views
0

Задайте этот вопрос. Я искал и читал руководство form_helpers.Выбрать поля в форме

Я создаю контроллер, как доска объявлений. В форме пользователь может выбрать, сколько он будет платить и какими (час, день, контракт).

Так моя форма выглядеть следующим образом

# _form.html.erb 

    <div class="field"> 
    <%= f.label :pay, "Pay" %><br> 
    <%= f.number_field :pay, required: true %> 
    </div> 

И показать

# show.html.erb 

<%= @thecontroller.pay %>/xxx 

Вместо "/ ххх" Я хочу, чтобы показать выбор пользователя. В форме, я хочу список с 3 входа «Час», «День» и «контракт»

я испытал что-то вроде этого, но я не understant

<select name="city_id" id="city_id"> 
    <option value="1">Lisbon</option> 
    <option value="2">Madrid</option> 
    <option value="12">Berlin</option> 
    </select> 

Мне нужно создать другой столбец? Мне нужно создать хелпер или другой код, кроме формы?

Благодарим вас за время.

ответ

0

Используйте метод select. Второй аргумент - это массив массивов, причем сначала элементы отображают значение, а второе - возвращаемое значение.

<%= f.select :pay, [['Hour', 1], ['Day' , 2], ['Contract', 3]], required: true %> 

Создать вспомогательный метод для show страницы ..

class ApplicationController < ActionController::Base 

    helper_method :show_pay 

    def show_pay(n) 
    %w(x Hour Day Contract)[n] 
    end 
end 

А на ваш взгляд, вы можете сделать ...

<%= show_pay(@thecontroller.pay) %>/xxx 
+0

Спасибо. Я тестировал, и это не работает. Сначала мое числовое поле возвращается к нулю, во-вторых, выбор f.select не сохраняется. –

+0

О, извините, это числовое поле! Это 1 час, 2 дня, 3 для контракта? Я изменил свой ответ, предположив, что так, но вы можете изменить возвращаемые числа по своему усмотрению. – SteveTurczyn

+0

My number_field - целочисленный столбец. В форме пользователь выбирает, сколько он заплатит за контракт. Поэтому в форме он выбирает контракт, а оплата и контракт появляются на странице показа. Твое понимание? сколько (целое)/контракт (час, день, контракт). Теперь проблема, когда я выбираю День, 2 появляется в поле number_field. Может быть, мне нужно создать новый столбец в базе данных для контракта? –