我们有一个标签资源:
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"} %>