2015-04-03 2 views
1

Я использую Best In Place gem.Есть ли способ сделать объект, управляемый Best_In_place, также ссылкой?

Это пример моего объекта:

<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_to node.name, node.

Как объединить два?

ответ

1

Использовать опцию display_with? Он принимает помощника или proc. Я бы предпочел помощник, но для краткости я показываю его с помощью proc:

<%= 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}" %> 
+0

Итак, вспомогательная версия просто включала бы имя вспомогательного метода в опцию 'display_with:'? Например, скажем, вспомогательный метод: 'link_to_node (node)', я бы включил только метод link_to в метод, а затем просто включил имя метода в 'display_with'? – marcamillion

+1

Действительно. Для некоторых примеров вы можете проверить [документацию] (https://github.com/bernat/best_in_place#using-display_with). – nathanvda

1

Вы можете обернуть 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> 

Я также отредактировали ссылку активатора, так это блок тоже. Это не проверено, но оно должно работать.

+0

Интересно. Я попробую это и посмотрю, работает ли оно. – marcamillion