我正在处理显示公司结构的页面(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>
答案 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]
希望有所帮助!