act_as_taggable_on ссылка на тег при условии контекста

Я использую actions_as_taggable_on, чтобы отмечать сообщения и профили пользователей. Записи тегов сохраняются правильно с taggable_type сообщением или профилем, а также тегами контекста и интересами. Acts_as_taggable_on отправляет <%= render post.tags %> и ‹% = render profile.interest%> в views / plays_as_taggable_on / tags / _tag.html.erb, где в файле readme предлагается ссылка_на лайк <%= link_to tag.name, tag_path(tag.name) %>.

Что я хотел бы сделать, так это изменить путь в зависимости от taggable_type или контекста - что-то вроде if tag.tagging.context == 'interest' link_to tag.name, profile_tag_path(tag.name) и т. Д. Для тегов сообщений и тегов профиля.

В соответствующих представлениях / контроллерах я могу правильно получить записи, отфильтрованные по context, у меня просто не получается изменить путь ссылки условно. tag.tagging.context выдает ошибку отсутствия метода, tag.taggings.each do |tag| tag.context возвращает все контексты для данного тега каждый раз, когда он использовался, т. Е. 4 отпечатка «интереса» и 10 отпечатков «тегов», если он использовался несколько раз как в профилях, так и в сообщениях. Я бы хотел только контекст для текущего экземпляра.

Я также был бы рад услышать, есть ли другой способ сделать это (например, ссылка на users / tagged / tag, чтобы возвращать только профили с тегом 'tag' и / tagged / tag, чтобы возвращать только сообщения с тегом 'tag' и т. Д. ), просто казалось, что все должно быть довольно просто.


person Jim Hogan    schedule 03.08.2016    source источник


Ответы (1)


В случае, если это будет полезно другим, я перебирал каждый тег следующим образом:

    <span class="global tags">
      <% @post.global_list.each do |tag| %>
        <span class="label label-default">
          <%= link_to tag, post_tag_path(tag) %>
        </span> 
      <% end %>
    </span>

    <span class="personal tags">
      <% @post.personal_list.each do |tag| %>
        <span class="label label-default">
          <%= link_to tag, user_tag_path(@post.user.name, tag) %>
        </span> 
      <% end %>
    </span>
person Jim Hogan    schedule 22.08.2016