Rails noob在这里提出了一个问题。
我正在尝试让用户输入他们的电话号码。表格目前包含国家代码,areacode和phonenumber的单独字段。
<% form_tag phones_path, :method => 'get' do %>
<th><%= text_field_tag :countrycode %></th>
<th><%= text_field_tag :areacode %></th>
<th><%= text_field_tag :search, params[:search] %></th>
<th><%= submit_tag "Search", :name => nil %></th>
<% end %>
我想将国家/地区代码字段转换为国家/地区名称的下拉列表,并在选择时自动显示实际的国家/地区代码。例如,用户选择USA,并显示+1。我将存储国家名称和数字代码。
我想我需要使用collection_select的组合来下拉和javascript来刷新显示。但我有点迷失如何继续前进。请问有什么样的灵魂会给出一些提示吗?
答案 0 :(得分:2)
首先,您应该在控制器中创建一个类似于:
的哈希@countries = { "United States" => "+1", "Switzerland" => "+41" }
然后为国家/地区创建选择列表,并为选择列表添加onchange javascript事件处理程序:
<% form_tag phones_path, :method => 'get' do %>
<th>
<%= select_tag :country,
options_for_select(@countries),
:onchange => "document.getElementById('countrycode').value = this.options[selectedIndex].value;"
%>
</th>
<th><%= text_field_tag :countrycode %></th>
<th><%= text_field_tag :areacode %></th>
<th><%= text_field_tag :search, params[:search] %></th>
<th><%= submit_tag "Search", :name => nil %></th>
<% end %>
注意:我已经在onchange事件中使用了标准的Javascript,如果你使用jQuery或prototypeJS,这可以写得更短更清洁:)
答案 1 :(得分:0)
你也可以这样做:
<%= f.collection_select(:subject_heading_source_id, SubjectHeadingSource.all, :id, :name, :prompt => "Please select...") %>
这取决于在某个表格中表示选择的内容并使用“form_for”方法来构建表单,因此它可能不完全适用。
编辑:意外提交,抱歉。我使用jQuery查找元素并更新它:
$("#phones_path_country_code").attr("selected", value_of_selection)
你把这部分放入:onchange =&gt; erb位的html选项中的“...”。
我的jQuery可能已关闭,但您可以在api网站上获得更好的想法。 jQuery