Passing multiple parameters with select-option to controller


#1

Hi all,

I’m using Windows Xp, Mysql 5, Webrick, Rails 1.0 I’ve 3 tables which
have HABTM relationship. My tables names are all set to uncountble. Name
of tabels are anabilimdali (includes department info id name etc.),
ogretimuye (personel information like id , name , dept. ) yayin
(document information), and for relationships yayin_anabilimdali ,
yayin_ogretimuye .

The relationship between yayin_anabilimdali is ok. But i can’t write any
parameters to yayin_ogretimuye table when I try to create new yayin
object. The object was successfully creted in yayin table and the
relationship was successfully created in yayin_anabilimdali table. Here
is the codes;

model

yayin.rb

class Yayin < ActiveRecord::Base
has_and_belongs_to_many :ogretimuye
has_and_belongs_to_many :anabilimdali
end

controller

yayin_controller.rb

class YayinController < ApplicationController
model :yayin


def new
@anabilimdali = Anabilimdali.find (:all , :order => “ad”)
@ogretimuye = Ogretimuye.find (:all , :order => “ad”)
end

def create
@anabilimdali = Anabilimdali.find_all
@ogretimuye = Ogretimuye.find_all
item = Yayin.new
item.attributes = @params[“yayin”]

if item.save
  for anabilimdali in @anabilimdali
      if (@params[anabilimdali.ad])

          item.anabilimdali<<(anabilimdali)
       end
   end



   for ogretimuye in @ogretimuye

    if (@params[ogretimuye[ogretimuye.id] == ogretimuye.id )

           item.ogretimuye<<(ogretimuye)

     end
   end
    redirect_to(:action => "list")
else
    render_text "Couldn't add new item"
end

end

View

new.rhtml

New yayin

<%= start_form_tag :action => ‘create’ %>
<%= render :partial => ‘form’ %>

Anabilimdallları
<% for @anabilimdali in @anabilimdali %> <%= @anabilimdali.ad %> :
<% end %>

Yazarlar

    <%for ogretimuye in @ogretimuye%>

    <select name=ogretimuye[ogretimuye.id][] multiple>
    <option value="<%=ogretimuye.id%>"> <%=ogretimuye.ad%> 

<%=ogretimuye.soyad%>
<%end%>

<%= submit_tag “Create” %>
<%= end_form_tag %>

<%= link_to ‘Back’, :action => ‘list’ %>

And the development.log

Processing YayinController#create (for 127.0.0.1 at 2005-12-17 12:52:05)
[POST]
Parameters: {“commit”=>“Create”,
“ogretimuye”=>{“ogretimuye.id”=>[“161”]}, “yayin”=>{“ad”=>“888888888”},
“action”=>“create”, “controller”=>“yayin”, “AAT\375p”=>“0”}
e[4;36;1mAnabilimdali Load (0.000000)e[0m e[0;1mSELECT * FROM
anabilimdali e[0m
e[4;35;1mOgretimuye Load (0.079000)e[0m e[0mSELECT * FROM ogretimuye
e[0m
e[4;36;1mYayin Columns (0.015000)e[0m e[0;1mSHOW FIELDS FROM
yayine[0m
e[4;35;1mSQL (0.000000)e[0m e[0mBEGINe[0m
e[4;36;1mSQL (0.000000)e[0m e[0;1mINSERT INTO yayin (kabul_yil,
yayin_yil, ad, cilt, index_tur, ozet, issn, sayfalar,
yayinlayici, tur, yer, yer_tur, dil, index, sayi,
anahtar, yerli_yabanci) VALUES(0, NULL, ‘888888888’, NULL, NULL, ‘’,
NULL, NULL, ‘’, ‘0’, NULL, ‘0’, ‘’, NULL, NULL, ‘’, ‘’)e[0m
e[4;35;1mSQL (0.047000)e[0m e[0mCOMMITe[0m
e[4;36;1mAnabilimdali Columns (0.000000)e[0m e[0;1mSHOW FIELDS FROM
anabilimdalie[0m
e[4;35;1mAnabilimdali Load (0.000000)e[0m e[0mSELECT * FROM
anabilimdali LEFT JOIN anabilimdali_yayin ON anabilimdali.id =
anabilimdali_yayin.anabilimdali_id WHERE (anabilimdali_yayin.yayin_id =
20 ) e[0m
e[4;36;1mSQL (0.000000)e[0m e[0;1mBEGINe[0m
e[4;35;1manabilimdali_yayin Columns (0.015000)e[0m e[0mSHOW FIELDS
FROM anabilimdali_yayine[0m
e[4;36;1mSQL (0.000000)e[0m e[0;1mINSERT INTO anabilimdali_yayin
(anabilimdali_id, yayin_id) VALUES (41, 20)e[0m
e[4;35;1mSQL (0.047000)e[0m e[0mCOMMITe[0m
e[4;36;1mOgretimuye Columns (0.016000)e[0m e[0;1mSHOW FIELDS FROM
ogretimuyee[0m