首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在<%= f.select_tag %>下拉列表中设置选定的值?

如何在<%= f.select_tag %>下拉列表中设置选定的值?
EN

Stack Overflow用户
提问于 2013-09-26 07:26:50
回答 3查看 1.3K关注 0票数 1

我有一个包含所有货币的长列表下拉菜单,我希望最后选择的值是列表中的默认选择值。我使用的是Rails 4.0.0和ruby 2.0.0

我不是在使用模型,我只是使用控制器。我已经将下拉列表选项放置在帮助器中。

form.html.erb

代码语言:javascript
复制
<div class="calculator">

    <%= form_for :convertor, :url => {:controller => "converter", :action => "show" } do |f| %>

        <%= f.label :from_currency %>
        <%= f.select :from_currency, options_for_select(currencies, :selected => params[:from_currency]) %>
        <%= f.text_field :amount, :placeholder => "Amount", id: "textfield" %>
        <%= @amount %>
        <br>

        <%= f.label :to_currency %>
        <%= f.select :to_currency, options_for_select(currencies, :selected => params[:to_currency].to_i ) %>
        <%= @result %>
        <br>

        <%= f.submit "Calculate", class: "btn btn-large btn-primary", id: "submitButton" %> 
    <% end %>

</div>

列表选项是从带有名称货币的助手*<%= f.select :to_currency,options_for_select(货币,:Selected=> params:to_currency.to_i ) %>*加载的。

帮助器中的下拉列表

代码语言:javascript
复制
def currencies
    [
        ['United Arab Emirates Dirham (AED)', 'AED'],
        ['Netherlands Antillean Guilder (ANG)', 'ANG'],
        ['Argentine Peso (ARS)', 'ARS'],
        ['Australian Dollar (A$)', 'AUD'],
        ['Bangladeshi Taka (BDT)', 'BDT'],
        ['Bulgarian Lev (BGN)', 'BGN'],
        ['Bahraini Dinar (BHD)', 'BHD'],
    ]
end

我在这里做错什么了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-28 07:51:41

这能帮上忙

代码语言:javascript
复制
<%= f.label :from_currency %>
            <% if @from_cur.present? %>
                <%= f.select :from_currency, options_for_select(currencies,  @from_cur)  %>
            <% else %>
                <%= f.select :from_currency, options_for_select(currencies), :required => true %>
            <% end %>
            <%= f.text_field :amount, :placeholder => "Amount", :required => true, id: "textfield"  %>
            <br>

            <%= f.label :to_currency %>
            <% if @from_cur.present? %>
                <%= f.select :to_currency, options_for_select(currencies,  @to_cur), :required => true %>
            <% else %>
                <%= f.select :to_currency, options_for_select(currencies), :required => true %>
            <% end %>

我很感激。

票数 0
EN

Stack Overflow用户

发布于 2013-09-26 07:31:35

几件事:

  1. takes two arguments:选项列表和要选择的值。
  2. 您正在以散列形式传递值::selected => params...
  3. 参数名是错误的。

在您的控制器中,您的意思是该参数名为:

代码语言:javascript
复制
params[:convertor][:from_currency]

但在你看来,你有params[:from_currency]

因此,解决这个问题的办法是这样做:

代码语言:javascript
复制
<%= f.select :from_currency, options_for_select(currencies, params[:convertor][:from_currency]) %>
票数 1
EN

Stack Overflow用户

发布于 2013-09-26 08:15:56

这个密码适用于我。

在应用程序中帮助

代码语言:javascript
复制
module ApplicationHelper
  def opts_for_select_cur
    opts_for_select = [
      ['United Arab Emirates Dirham (AED)', 'AED'],
      ['Netherlands Antillean Guilder (ANG)', 'ANG'],
      ['Argentine Peso (ARS)', 'ARS'],
      ['Australian Dollar (A$)', 'AUD'],
      ['Bangladeshi Taka (BDT)', 'BDT'],
      ['Bulgarian Lev (BGN)', 'BGN'],
      ['Bahraini Dinar (BHD)', 'BHD'],
    ]

    return opts_for_select
  end
end

以及在视野中

代码语言:javascript
复制
<script type="text/javascript">
 $(document).ready(function(){

 $('#st').change(function(){
  var inputText = $('#st :selected').val();
  $("#hidden_one").val(inputText);

  $("a").attr("href", "?value="+inputText );

 });
 $('#aa').click(function(){
  var inputText = $('#st :selected').val();
  $("a").attr("href", "?value="+inputText );
});

});

代码语言:javascript
复制
<%= f.select :text, options_for_select(opts_for_select_cur, params[:value]), {}, { id: "st" } %>
<br>
<%= link_to "refresh",nil, id: "aa" %>

结果是一个选择值为.的复选框。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19021937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档