2011-12-01 72 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