-1

我的控制器中有以下代码:

struc = {'en' => 'english', 'es' => 'espaniol', 'de' => 'germany', 'fr' => 'french', 'it' => 'italy'}
struc.each_pair do |key, value|
  @key=key
  @value=value
end

在我的 application.html.erb 我有以下

<select name="Language" onchange="location=this.options[this.selectedIndex].value;">
    <option value="/<% @key %>/<%= @rem %>"><%= @value %></option>
</select>

现在我怎样才能让'@key'和'@value'的值递归显示在(application.html.erb)上?

另外我怎样才能改变它的样式,即使值看起来更小,很好地藏起来?

提前致谢

4

2 回答 2

3

为什么不喜欢

in controller

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

in view

<select name="language" onChange="location = this.options[this.selectedIndex].value;">
  <% @langs.each_pair do |short, long| %>
    <option value="<%= short %>"><%= long %></option>
  <% end %>
</select>
于 2012-11-13T16:57:19.520 回答
2

您需要通过将 struc 转换为实例变量(即@struc)来使视图对它可用。然后在你看来做

<select name="Language" onchange="location=this.options[this.selectedIndex].value;">

<% @struc.each_pair do |key, value| %>
        <option value="/<%= key %>/<%= @rem %>"><%= value %></option>
<% end %>

</select>
于 2012-11-13T16:56:53.003 回答