2012-03-05 6 views
2

私は、顧客の属性を編集するための簡単なフォーム(Rails 3.1とRuby 1.9.3)を作成しています。コントローラコード:nilはform_forのシンボルではありません

def edit 
    cust_id = params[:cust_id] 
    output_id = params[:output_id] 
    @cust = CustOutput.find(:all, :conditions => {:cust_id => cust_id, :output_id => output_id }) 
    logger.info(@cust[0].cust_id) 
end 

鑑み:

<h2> Editing customer <%[email protected][0].cust_id %> with output id <%[email protected][0].output_id %></h2> 
<div> 
<%= form_for @cust[0] do |cust| %> 
    <%= render "shared/error_messages", :target => @cust[0] %> 
    <div id='id' class='outerDiv'> 
     <%= cust.text_field :cust_id, :size => 20 %> 
    </div> 
    <div id='email1' class='outerDiv'> 
     <label for='email1'>Email Part1</label> 
     <%= cust.text_field :email_part1, :size => 20 %> 
    </div> 
    <div id='email2' class='outerDiv'> 
     <label for='email2'>Email Part 2</label> 
     <%= cust.text_field :email_part2, :size => 20 %> 
    </div> 
    <div id='dt' class='outerDiv'> 
     <label for='dt'>Delivery Type</label> 
     <%= cust.text_field :delivery_type, :size => 20 %> 
    </div> 
    <%= cust.submit "Save" %> 
    <span class="cancel"><%= link_to "Cancel", :action=>"load", :cust_name=>"#{@cust[0].cust_id}" %> 
<% end %> 
</div> 

Iは、編集ページを開くから得たエラーメッセージ(HTTP:// localhostを:3000 /編集CUST_ID = 2 &の、output_id = 6?) :

nil is not a symbol 
Extracted source (around line #3): 

1: <h2> Editing customer <%[email protected][0].cust_id %> with output id <%[email protected][0].output_id %></h2> 
2: <div> 
3: <%= form_for @cust[0] do |cust| %> 
4:  <%= render "shared/error_messages", :target => @cust[0] %> 
5:  <div id='id' class='outerDiv'> 
6:  <%= cust.text_field :cust_id, :size => 20 %> 

最初に渡された@cust [0]がnilオブジェクトであるかどうかを確認することです。私はコントローラに入れロガーからまた(提供CUST_IDとの、output_idで)

@cust = CustOutput.find(:all, :conditions => {:cust_id => 2, :output_id => 6 }) 
CustOutput Load (0.7ms) SELECT "cust_outputs".* FROM "cust_outputs" WHERE "cust_outputs"."cust_id" = 22 AND "cust_outputs"."output_id" = 6 
=> [#<custOutput cust_id: 2, output_id: 6, email_part1: "[email protected]", email_part2: nil, delivery_type: "ftp">] 

を確認レールコンソールでは、ログに有効で正しいのcust_id出力は実際にあります。では、どうして私はまだシンボルエラーメッセージではないのですか?私はCustOutputモデルもチェックしており、すべてのattr_accessibleフィールドがあります。

答えて

0

コレクション内の最初の顧客のフォームをレンダリングしたい場合は、@cust.firstを使用するのはどうですか?

0

使用してみてください:(:firstの代わり:all

@cust = CustOutput.find(:first, :conditions => {:cust_id => cust_id, :output_id => output_id }) 

そして、あなたのform_forすべて[0]参照

+0

うん、私はそれを試してみました。結果はまったく変更されません。 – swingfuture

0

を削除それは古い質問ですが、中にメンテナンスを行うとき、私は最近、同じ問題を抱えている中古いプロジェクトこのプロジェクトでは、IDに別の列が使用されていますが、主キーはモデルで指定されていません。追加これらの行の後

すべての作品:

self.primary_key = 'uuid' 

プロジェクト用のRails 3.1とMySQL 5

関連する問題