Rails 4 资源自定义问题



我们有一个标签资源:

resources :tags, only: [:index, :show, :update, :destroy]

我正在尝试复制部分tags/tag的功能:

<%= render partial: 'tags/tag', collection: tags %> ## <~ my copy ##
<%= render partial: 'collections/collection', collection: collections %>
<%= render partial: 'saved_searches/saved_search', collection: saved_searches %>
<%= render partial: 'tags/tag', collection: tags %>
<%= render feeds %>

以下是部分_tag.html.erb

<% hide_drawer = (session[:view_mode] == 'view_unread' && tag.unread_count == 0 && !tag.user_feeds.any?) ? true : false %>
<li data-tag-id="<%= tag.id %>" data-feed-id="tag-<%= tag.id %>" class="<%= selected("tag_#{tag.id}") %>">
  <%= link_to tag_path(tag.id), remote: true, class: 'feed-link tag-link', data: { behavior: 'selectable reset_entry_position show_entries open_item feed_link', mark_read: {type: 'tag', data: tag.id, message: "Mark #{tag.name} as read?"}.to_json } do %>
    <span class="favicon-wrap">
      <span class="favicon favicon-tag"></span>
    </span>
    <%= content_tag :span, tag.unread_count, class: 'count' + hide_count(tag.unread_count) %>
    <% unless hide_drawer %>
      <%= render partial: 'tags/tag_visibility', locals: {user: @user, tag: tag} %>
    <% end %>
    <%= tag.name %>
  <% end %>
  <div class="drawer <%= hide_drawer ? ' hide' : '' %>" data-hidden="<%= drawer_visible?(tag.id) ? 'false' : 'true' %>" style="<%= drawer_visible?(tag.id) ? '' : 'height: 0;' %>">
    <ul>
      <%= render tag.user_feeds %>
    </ul>
    <i class="drawer-arrow"></i>
  </div>
</li>

这是显示方法:

def show
    @user = current_user
    update_selected_feed!("tag", params[:id])
    @tag = Tag.find(params[:id])
    @feed_ids = Tagging.where(tag_id: @tag, user_id: @user).pluck(:feed_id)
    feeds_response
    @append = !params[:page].nil?
    @type = 'tag'
    @data = params[:id]
    @collection_title = @tag.name
    @collection_favicon = 'favicon-tag'
    respond_to do |format|
      format.js { render partial: 'shared/entries' }
    end
  end

我正在尝试做的是重用相同的部分,只输出名为"邮箱"的标签。我是否需要向方法添加一些逻辑以使部分仅显示名为"邮箱"的标记? 如何告诉部分仅显示单个"邮箱"标记?任何建议或帮助将不胜感激,我是一个新的Rails开发人员。

两种方式。

通过本地

<%= render partial: 'tags/tag', locals: {tag: tags.find{|t| t.name == "Mailbox"}}%>

只传递一个只有一个标签的数组

<%= render partial: 'tags/tag', collection: tags.collect{|t| t.name == "Mailbox"} %>

最新更新