通过link_to传递HTML元素中的文本

时间:2011-08-01 23:22:06

标签: jquery html ruby-on-rails ruby views

我正在处理显示公司结构的页面(Position类的索引视图),这是一个无序的位置列表。

单击某个位置时,文本会变为白色,并且我希望在单击“新位置”链接时将该位置的名称或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>

1 个答案:

答案 0 :(得分:0)

如果您希望将其传递给控制器​​,则需要使用表单(或者您也可以使用jQuery ajax()调用)。此外,您应该使用隐藏字段暂时存储位置值,因为这可能是更合适的方式。

<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[:selected_position]

的形式显示

希望有所帮助!