2012-07-18 14 views
9

新しいRORプログラマーがここにあります。私は、ユーザーが会社の情報を入力するフォームを完成させるWebアプリケーションを構築しようとしています。そして、submitをクリックすると、入力がデータベースに追加されます。Ruby on Rails:ユーザーが新しい情報を入力できるようにするか、ドロップダウンメニューをクリックして既存の情報を選択します

現在、ユーザーが新しいエントリを作成する場合、「Company Name」などのいくつかのフィールドが表示されます。新しい会社に入れるための空白のボックスがあり、その隣には、ユーザーがデータベース内の既存の会社を見るために使用できるドロップダウンメニューがあります。

<div class="field"> 
<%= f.label :company_name %><br /> 
<%= f.text_field :company_name %> 

<%= f.label :company_name %><br /> 
<%= f.select(:company_name, Company.all.map {|p| [p.company_name]}.uniq!, :prompt => "Select a Company") %> 

私は、ユーザーが新しい会社を入力するか、ドロップダウンメニューをクリックして、既存の会社を選択することができるようにする方法を探しています。

現在: テキストボックスに何も入力されておらず、ドロップダウンからオプションを選択していない場合は、空白として保存されます。 何かが入力され、オプションが選択されていない場合は、空白として保存されます。 しかし、何かが入力され、何かがドロップダウンから選択された場合、ドロップダウンオプションが保存されます。

私はそれをあまりにも混乱させていないことを願っています。助けを借りていただければ幸いです。

ありがとうございます。

EDIT:新しいエラーは今

<%= label :company_name %><br /> 
<%= text_field :new_company_name %> 

<%= f.label :company_name %><br /> 
<%= f.select(:company_name, Company.all.map {|p| [p.company_name]}.uniq!, :prompt => "Select a Company") %> 

私がアクションを作成し、今この

def create 
@company = Company.new(params[:company]) 
@company.company_name = params[:new_company_name] unless params[:new_company_name].empty? 

respond_to do |format| 
    if @company.save 
    format.html { redirect_to @company, notice: 'Company was successfully created.' } 
    format.json { render json: @company, status: :created, location: @company } 
    else 
    format.html { render action: "new" } 
    format.json { render json: @company.errors, status: :unprocessable_entity } 
    end 
end 

エンド

とフォームビューのように見えます引数の0間違った番号(2用1)

抽出されたソース: <% =ラベル:あなたの助けをCOMPANY_NAME%>

ありがとう!あなたは

<%= text_field :new_company_name %> 

、その後でアクションを作成

@company = Company.new(params[:company]) 
@company.company_name = params[:new_company_name] unless params[:new_company_name].empty? 
+0

ユーザーがドロップダウンから何かを選択した場合、あなたは何を期待しますし、また何かを入力? – gabrielhilal

+0

ユーザーが入力した入力が優先されると思います。 – Jazz

答えて

4

を設定することができます

+0

gabrielhialと@rodzynのお手伝いをありがとう。私の質問に私の編集を見ることができるでしょうか? もう一度おねがいします! – Jazz

+0

これは私のせいです...申し訳ありません。クラス会社に関係していないので、 '[:new_company_name]'の前にある '[:company]'を削除してください... – gabrielhilal

+0

私にお越しいただきありがとうございます。私はそれをやったが、まだエラーを取得している: 会社のための未定義のメソッド 'new_company_name」:0xb5424860 をし、抽出されたソースです。<%= f.text_field:new_company_name%> 乾杯私は問題は' Fだと思う再び – Jazz

2

レールは彼らと何をするか分からないだろうとあなたは、あなたのビューで同じ名前の2つのparamsを持つことはできません

@rodzynが正しいので、クレジットを教えてください。:)ただ、明確にする

フォーム:

<%= label_tag :new_company_name, "Company name" %><br /> 
<%= text_field_tag :new_company_name %> 

<%= f.label :company_name %><br /> 
<%= f.select(:company_name, Company.all.map {|p| [p.company_name]}.uniq!, :prompt => "Select a Company") %> 

あなたのコントローラ:

@company = Company.new(params[:company]) 
@company.company_name = params[:new_company_name] unless params[:new_company_name].empty? 
関連する問題