2016-09-28 2 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 

を示し、 "/ XXX" 私は、ユーザーの選択肢を示してほしいです。フォームで 、私はそのようなことでテストが、私は私が作成する必要が

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

understantない3エントリ「時間」、「日」と「契約」

のリストをしたいです別の列? フォーム以外にヘルパーやその他のコードを作成する必要がありますか?

ありがとうございます。

答えて

0

selectメソッドを使用します。 2番目の引数は配列の配列です。要素は最初に表示する値で、2番目は返す値です。

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

class ApplicationController < ActionController::Base 

    helper_method :show_pay 

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

そして、あなたが行うことができますあなたのビューで.. showページのためのヘルパーメソッドを作成します...

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

ありがとうございました。私はテストし、それは動作しません。最初に私の数字フィールドはゼロに戻り、2番目にf.selectの選択は保存されません。 –

+0

ああ、申し訳ありませんが、それは数字のフィールドです!それは1時間、2日間、3時間ですか?私はそれを仮定して私の答えを変更しましたが、あなたが合っているように返された数を変更することができます。 – SteveTurczyn

+0

私のnumber_fieldは整数列です。フォームでは、ユーザーは契約金額を選択します。だからフォームで彼は契約を選択し、支払いと契約はショーページに表示されます。あなたの理解?どのくらい(整数)/契約(時間、日、契約)。問題は今、私がDayを選択すると、number_fieldに2が現れます。たぶん、私は契約のデータベースに新しい列を作成する必要がありますか? –

関連する問題