Rails에 대한 지루한 빵 부스러기
궁극적으로 앱에서 이동 경로를 표시하는 방법을 제어해야 하므로 이 기능에 대한 모든 코드를 소유하는 것이 좋습니다.
용법
먼저
Breadcrumb
에 대한 모델을 추가합니다. 이것은 app/models
폴더에 있을 수 있지만 데이터베이스에 유지할 필요가 없기 때문에 ActiveRecord 모델일 필요는 없습니다.class Breadcrumb
attr_reader :name, :path
def initialize(name, path)
@name = name
@path = path
end
def link?
@path.present?
end
end
다음으로 이동 경로를 저장하고 추가하는 방법을
ApplicationController
에 추가합니다.class ApplicationController < ActionController::Base
...
helper_method :breadcrumbs
def breadcrumbs
@breadcrumbs ||= []
end
def add_breadcrumb(name, path = nil)
breadcrumbs << Breadcrumb.new(name, path)
end
end
그런 다음 레이아웃에서 원하는 대로 이동 경로를 렌더링할 수 있습니다. 내 응용 프로그램에서는
<title>
헤드 태그와 페이지 머리글 모두에서 이동 경로를 사용합니다.<head>
<title>
<%= breadcrumbs.map(&:name).reverse.append("My App").join(" | ") %>
</title>
</head>
<nav>
<ol class="breadcrumbs">
<% breadcrumbs.each do |crumb| %>
<li>
<% if crumb.link? %>
<%= link_to crumb.name, crumb.path, class: "breadcrumb-link" %>
<% else %>
<span class="breadcrumb-page">
<%= crumb.name %>
</span>
<% end %>
<% unless crumb == breadcrumbs.last %>
<span class="breadcrumb-separator">/</span>
<% end %>
</li>
<% end %>
</ol>
</nav>
간단한 API이지만 이 모델을 사용하면 각 컨트롤러에 이동 경로를 추가할 수 있습니다. 이동 경로는 링크로 사용하려는 경우 옵션
path
을 포함할 수 있습니다.before_actions
또는 각 작업 내부에 이동 경로를 설정할 수 있습니다. 일반 Ruby 코드와 마찬가지로 조건 논리를 추가할 수 있습니다.class PostsController < ApplicationController
before_action :set_breadcrumbs
def index
@posts = Post.all
end
def show
@post = Post.find(params[:id])
add_breadcrumb(@post.title, @post)
end
def new
@post = Post.new
add_breadcrumb("New Post")
end
private
def set_breadcrumbs
add_breadcrumb("Admin", admin_home_path) if Current.user.admin?
add_breadcrumb("Posts", posts_path)
end
end
섹시한? 아니. 지루해? 예. 잘 작동합니까? 물론.
Reference
이 문제에 관하여(Rails에 대한 지루한 빵 부스러기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/swanson/boring-breadcrumbs-for-rails-3p0p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)