0

私のアプリのモバイルページには、以下のようなjQueryMobileドロップダウン選択メニューリストのヘッダーがあります。

<span data-role="fieldcontain" id="category-dropdown">
  <select name="select-native-2" id="select-native-2" data-mini="true">
    <option value="<%= root_path %>">Home</option>
    <option value="<%= newest_path %>">New</option>    
    <option value="<%= group_path(Group.find(1)) %>">Group 1</option>
    <option value="<%= group_path(Group.find(2)) %>">Group 2</option>
    <option value="<%= group_path(Group.find(3)) %>">Group 3</option>
  </select>
</span>

以下のJavascriptを使用して、選択したページに移動しています。

<script type="text/javascript">
$(document).ready(function() {
  $("#select-native-2").change(function(){
    if ($(this).val()!='') {
      window.location.href=$(this).val();
    }
  });
});
</script>

私の問題は、ユーザーが別のページにリダイレクトすると、選択メニューがデフォルトで最初のオプション(「ホーム」)に戻ることです。選択メニューに現在のページを反映させるにはどうすればよいですか?

私の推測では、私はする必要があります

#1どのオプションが「アクティブ」であるかをマークし、次に

#2それがjavascriptを介してselectmenuでアクティブになっていることを確認してください。

これら2つのことを行うための最良の方法は何ですか?

私は以下のように#1を行うことができますが、それはかなり醜いです

<option value="<%= root_path %>" id="<%= "active" if params[:controller] == "links" && params[:action] == "index" %>">

#2に関しては、それを選択する最善の方法がわかりません。

ご意見をいただければ幸いです。

4

2 に答える 2

1

selected属性を使用しないのはなぜですか?

<span data-role="fieldcontain" id="category-dropdown">
  <select name="select-native-2" id="select-native-2" data-mini="true">
    <option value="<%= root_path %>">Home</option>
    <option value="<%= newest_path %>">New</option>    
    <option selected value="<%= group_path(Group.find(1)) %>">Group 1</option>
    <option value="<%= group_path(Group.find(2)) %>">Group 2</option>
    <option value="<%= group_path(Group.find(3)) %>">Group 3</option>
  </select>
</span>

これにより、ページの読み込み時に「グループ1」が選択されたオプションになります。どのオプションがこの属性を取得するかを理解する必要があります。しかし、それはRuby側では簡単にできるはずです。

于 2013-03-20T22:32:28.923 に答える
0

@Steveのソリューションに追加するために、現在のページを選択するのに役立つヘルパーを作成しました。

def is_selected?(action, name)
  if params[:controller] == "links" # this is the controller for my root and newest paths
    "selected" if params[:action] == action
  elsif params[:controller] == "groups"
    "selected" if @group.name == name
  end
end
于 2013-03-22T15:29:16.833 に答える