2

私は何を達成しようとしていますか

私は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' }

機能していないもの

ユーザーが英語/スペイン語/ドイツ語で Web サイトを表示する、リストから選択すると、選択ボックスには明らかに特定の言語が表示されます。つまり、英語の場合は英語、スペイン語の場合はスペイン語などです。これは正確に機能していないことです

機能しているもの

ユーザーが選択ボックスから優先言語 (スペイン語など) を選択すると、特定のページが表示されますが、選択ボックスには英語が表示されますが、これは本質的にespaniol.

ありがとう!

4

2 に答える 2

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>
于 2012-11-21T16:22:32.213 に答える
0

背景と解決策

OKみんな!些細なことの解決策を見つけることができなかったために費やして頭をぶつけた後。私はついにバグを解決するためになんとか回避することができました。簡単に言うと、application_controller.rbで変更が必要でした。ここで、(国の)言語のデータセット値はハッシュ形式であり、実際には配列形式である必要がありました(ハッシュ形式の質問については上記を参照してください)。それに加えて、application.html.erbにわずかな変更を加える必要がありました。動作するソースコードについては、以下を参照してください。

それを機能させるために行われた変更

  • ハッシュ形式を配列形式に変更しました
  • each.pairをそれぞれのみに変更

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>

このバグを解決するための努力に感謝します。これが将来誰かに役立つことを願っています。

于 2012-11-22T11:15:38.463 に答える