わたなべです。よろしくお願いします。
habtmでparamsを受け取る方法について質問させてください。
環境は、
Ruby 1.8.4
Rails 1.1.2
Windows
です。
Webアプリの構成は、Service:Area = n:nのhabtmで
Serviceというのは会員様が登録されるテーブルです。
Areaというのは地域のデータで、県、市、町等が入るテーブルです。
最初1:nで実装しようと思いましたが、県でも市でも引っかかる
ように、n:nにしました。
Serviceの登録画面後、確認画面を表示させる構成になっているのですが、
hiddenタグとパラメータを使って、確認画面を表示させています。
登録画面で、エリアを選択させる部分のソースは、
このようになっています。
<!--rails start-->
<select id="service_area_id" name="service[area_ids][]">
<% for area in @area %>
<option value="<%= area.id %>"><%=h area.name %></option>
<% end %>
</select>
<!--rails end-->
確認画面に移るときのControllerのdef confirmメソッドでは、
@area_name = Area.find(@params[:service][:area_ids]).name
というようにパラメータで受けて、選択されたIDを使って
Areaのテーブルから名前を受け取り、確認画面に反映させたいのですが、
エラーが起こります。
--------エラー画面----------------------------------------------------
Couldn't find Area without an ID
C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/base.rb:939:in `find_from_ids'
C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/base.rb:382:in `find'
#{RAILS_ROOT}/app/controllers/b_account_controller.rb:145:in `confirm'
Parameters: {"membertype"=>"3", "service"=>#<Service:0x39dd9a8 @attributes=
{"name_j"=>"", "attachment_id"=>nil, "latitude"=>nil, "updated_at"=>nil,
"companyname"=>"fsdfds", "expired_at"=>nil, "between_a"=>"",
"deleted_at"=>nil, "between_b"=>"", "website"=>"fsdf", "tel"=>"sfsdfs",
"companyaddress"=>"555 Irving, San Francisco, CA", "manager"=>"sdfdsf",
"name_e"=>"fsdfds", "longitude"=>nil, "companytel"=>"sfsdfs",
"chargerpost"=>"sdfsdf", "charger"=>"sdfdsf",
"address"=>"555 Irving, San Francisco, CA", "password"=>"sdfsd",
"created_at"=>nil, "industry_id"=>"1", "membertype_id"=>"3",
"email"=>"sdfsd"}, @areas=[#<Area:0x39dc268
@attributes={"name"=>"\343\203\217\343\203\274\343\203\254\343\203\240",
"latitude"=>"-73.94691467285156", "id"=>"1", "longitude"=>"40.80822244501176"}>],
@new_record=true>}
----------------------------------------------------------------------
安直に
@area_name = Area.find(@params[:service][:area_id]).name
しても同じエラーが帰ってきました。
たぶん文法的な問題だとおもいますが、Googleで検索しても見つかりませんでした。
当Railsのメーリングリストの過去ログをチェックしても見つかりませんでした。
どなたかご存知の方がおりましたら教えてください。
よろしくお願いいたします。
Let's start Yahoo! Auction - Free Campaign Now!