2011-08-01 15 views
1

私は、会社の構造(Positionクラスのインデックスビュー)を表示するページ上で作業しています。これは、位置の順不同のリストです。link_toを介してHTML要素にテキストを渡す

位置をクリックすると、テキストが白く変わり、「新しい位置」リンクがクリックされたときにその位置の名前またはIDをコントローラに渡します。

私は、非表示の段落が選択された位置の名前を含むように設定しようとしましたが、link_to内の段落にアクセスする方法がわかりません。

提案がありますか?ここでは、コードは次のとおりです。あなたはそれがコントローラに渡されることを希望している場合

<ul> 
    <% @positions.each do |position| %> 
    <% indent = "text-indent:" + ((position.depth_level - 1) * 20).to_s + "px;" %> 
    <li style=<%=indent%> class="position_item"><%= position.name %></li> 
    <% end %> 
</ul> 

<p id="selected_position" class="hide"></p> 

<%= link_to 'New Position', new_position_path %> 

<script> 
    $("li").click(function() { 
    $("li").removeClass("hilite"), 
    $(this).addClass("hilite"), 
    $("#selected_position").text($(this).text()); 
    }); 
</script> 

答えて

0

、フォームを使用して、そうする必要があります(または、あなたはまた、jQueryのajax()コールを使用することができます)。また、一時的にポジション値を格納するには、隠しフィールドを使用するだけです。これはおそらくより適切な方法です。 param[:selected_position]

希望としての

<ul> 
    <% @positions.each do |position| %> 
    <% indent = "text-indent:" + ((position.depth_level - 1) * 20).to_s + "px;" %> 
    <li style=<%=indent%> class="position_item"><%= position.name %></li> 
    <% end %> 
</ul> 

<% form_tag(new_position_path, :id => "new_position", :method => "GET") do %> 
    <input name='selected_position' type='hidden' value='' /> 
    <input name='commit' type='submit' value='New Position' /> 
<% end %> 

    <script> 
    $("li").click(function() { 
     $("li").removeClass("hilite"), 
     $(this).addClass("hilite"), 
     $("input[name='selected_position']").val($(this).text()); 
    }); 
    </script> 

送信ボタンを押すと、selected_position paramは形で渡されますと、コントローラで利用できるようになります助けること!

+0

ありがとうございました。 – Alexei

+0

問題ありません、うれしいです! – iwasrobbed

関連する問題