【问题标题】:How to use JavaScript selected functionality when particular language is selected in conjunction with ruby?当与 ruby​​ 一起选择特定语言时,如何使用 JavaScript 选择功能?
【发布时间】:2012-11-21 16:02:09
【问题描述】:

我想达到什么目的

我有一个 html 选择框。选择框负责选择首选语言。例如,如果页面显示在德国,则选择框应显示德国作为其首选项,其他语言也是如此。

到目前为止做了什么

在 application.html.erb 我有以下代码

#application.html.erb

<select name="language" onChange="location = this.options[this.selectedIndex].value;">
    <% @langs.each_pair do |short, long| %>
    <option value="/<%= short %>/<%= @rem %>" <% if short==@langu %> selected="selected"<% end %>><%= long %></option>
    <% end %>
</select>

在 application_controller.rb 我有以下代码

#application_controller.rb
@string = request.fullpath
@langu  = @string.split("/")
@rem    = @string.split("/#{@langu[1]}/")
@langu  = @langu[1]
@rem    = @rem[1]

@langs = { :en => 'english', 
           :es => 'espaniol', 
           :de => 'germany', 
           :fr => 'french', 
           :it => 'italy' }

什么不起作用

当用户查看英语/西班牙语/德语的网站时OR 从列表中选择,选择框显然应该显示特定的语言。即如果英语然后英语,如果西班牙语然后espaniol等等。这确实是行不通的事情

什么是有效的

如果用户从选择框中选择首选语言(比如说西班牙语),它会呈现特定页面,但是选择框显示英语,本质上应该是espaniol

谢谢!

【问题讨论】:

  • 属性是selected 而不是select。如果您使用的是 HTML5,则可以省略 selected="selected" 而直接写为 selected
  • 感谢您指出错别字,但不是工作人员

标签: ruby-on-rails ruby ruby-on-rails-3 internationalization selection


【解决方案1】:

您的字符串中只有一个小错字。它应该是selected='selected',所以它应该像这样工作:

<select name="language" onChange="location = this.options[this.selectedIndex].value;">
<% @langs.each_pair do |short, long| %>
<option value="/<%= short %>/<%= @rem %>" <% if @short==@langu %> selected="selected"<% end %>><%= long %></option>
<% end %>
</select>

【讨论】:

  • 也是if short==@langu 而不是@short [line: 3]
  • 请注意,使用onChange 是疯狂的老派。不能用jQuery之类的更文明的东西吗?
【解决方案2】:

背景和解决方案

好的,伙计们!由于无法找到解决琐碎问题的方法而花费并敲打我的头之后。我终于设法解决了这些错误。简而言之,application_controller.rb 需要更改,其中我的语言(国家/地区)数据集值采用哈希格式,实际上需要采用数组格式(请参阅上面的哈希格式问题)。除此之外,我还必须对 application.html.erb 稍作更改,请参阅下面的工作源代码

为使其正常工作所做的更改

  • Hash格式改为Array格式
  • each.pair 更改为仅 each

IN application_controller.rb

@langs = [['en','english'],
          ['es','espaniol'],
          ['de','germany'],
          ['fr','french'],
          ['it','italy']] 

IN application.html.erb

<select name="language" onChange="location = this.options[this.selectedIndex].value;">    
    <% @langs.each do |short, long| %>
        <option value="/<%= short %>/<%= @rem %>" <% if short==@langu %> selected="selected" <% end %>><%= long %></option>
    <% end %>
</select>

注意 感谢大家为解决此错误所做的努力。希望这对将来的某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 2017-09-19
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多