2011-12-01 48 views
0

我想創建一個下拉菜單並在rails3中爲它指定一個onchange事件。我將如何做到這一點。選擇標記在rails 3中

<select name="" class="wy_inputs_selects sround"> 
     <% @domains.each do |record| %> 
    <option value="<%= record.name %>.<%= record.tld %>" ><%= record.name %>.<%= record.tld %></option> 
      <%end%> 
</select> 

我將上面的代碼爲紅寶石一樣

<%= select_tag "",:class=>'wy_inputs_selects sround',options_from_collection_for_select(@domains,"name", 

但我堅持如何獲得record.tld和使用上述格式

回答

2

嘗試這種

<select name="" class="wy_inputs_selects sround"> 

<% @domains.each do |record| %> 
<% @name_tld = record.name.to_s + "." + record.tld.to_s %> 
<option value="#{@name_tld}" ><%= @name_tld %></option> 
<% end %> 

</select> 


你也可以你軌道選擇輔助方法,像這樣(在此被使用的形式的內部)

例1

<%= form_for @dates,:remote => true do |f| %> 
    <%= f.date_select :booking_date,:onchange => "this.form.submit();" %> 
<% end %> 

例2(默認值)

<%= form_for(@image),:remote => true do |f| %> 
    <%= f.select :album_id, @albums_all.map {|m| [m.name, m.id] }, :selected => @album_id %> <!-- default value, current album --> 
<% end %> 

記住,包括這你的意見/佈局/ application.html.erb文件,所以軌道將使用AJAX

<%= javascript_include_tag :defaults %> 
<%= csrf_meta_tag %> 
+0

所以我可以指定onchange事件處理程序來選擇標籤,如{:onchange =>「show_spinner('」+「#{record.domainkey}」+「');」} – rubyist

+0

是的,你可以像這樣使用它,'select_tag :變量,options_from_collection_for_select(:all,:id,:name),:onchange =>'your_onchange_handler()'(請投票,如果它有幫助:)) – Francois

+0

所以這樣做:所有:ID和:名稱變量包含?我試圖將上面的代碼寫成<%= select_tag「>,:class =>'wy_inputs_selects sround',options_from_collection_for_select(@domains,」name「)但是被這些選項卡住 – rubyist

0

我會定義record.name記錄模型中的名稱(record.rb或domain.rb,無論您的型號名稱是什麼),如下所示:

def detail_name 
    return self.name+'.'+self.tld 
end 

然後從select標籤中調用detail_name。

+0

在我的控制器我做了@domains = Domains.by_userid(:key => session [:wy_main_userid])。因此,@域將包含name和tld值,我需要在查看頁面中選擇標記。 – rubyist