有没有办法让 Best_In_place 管理的对象也成为 link?

Is there anyway to make an object managed by Best_In_place also be a link?

我正在使用Best In Place gem

这是我对象的一个​​例子:

<h5><%= best_in_place node, :name, as: :input, activator: "#edit-node-title-#{node.id}" %> <%= link_to "<i class='fa fa-pencil'></i>".html_safe, "#", id: "edit-node-title-#{node.id}" %></h5> 

但我想要做的是将 node.name 属性显示为常规 link。

所以 link_to node.name, node.

如何将两者结合起来?

您可以将 Best in Place 标签包裹在 link_to 标签内:

<h5>
  <%= link_to node_path(node) do %><!-- Or whatever path you want to link_to --> 
    <%= best_in_place node, :name, as: :input, activator: "#edit-node-title-#{node.id}" %>
  <% end %>
  <%= link_to "#", id: "edit-node-title-#{node.id}" do %>
    <i class='fa fa-pencil'></i>
  <% end %>
</h5>

我还编辑了你的激活器 link 所以它也是一个块。这是未经测试的,但它应该工作。

使用display_with选项?它需要一个助手或过程。我更喜欢一个帮手,但为了简洁起见,我用一个过程来展示它:

<%= best_in_place node, :name, as: :input, 
                               activator: "#edit-node-title-#{node.id}" 
                               display_with: proc{|node| link_to node.name, node_path(node) }
%> 
<%= link_to "<i class='fa fa-pencil'></i>".html_safe, "#", id: "edit-node-title-#{node.id}" %>