config/routes.rb 파일에서 모델을 사용하려면 어떻게해야합니까? 내가 이루고자하는 목표는 다음과 같습니다.모델을 사용한 레일스 라우팅
match '/:name', :topic => Post.where(:topic => name).first, :to => 'posts#search'
이 가능합니까?
config/routes.rb 파일에서 모델을 사용하려면 어떻게해야합니까? 내가 이루고자하는 목표는 다음과 같습니다.모델을 사용한 레일스 라우팅
match '/:name', :topic => Post.where(:topic => name).first, :to => 'posts#search'
이 가능합니까?
@Michael 잘입니다 - 루트 파일에 데이터베이스 코드를 삽입하지 않습니다. 물론, 가능하지만 레일 협약 및 원칙에 위배됩니다.
더 나은 방법은 다음과 같습니다
이= form_tag(search_posts_path, :method => :get) do
= text_input_tag(:q)
그리고 컨트롤러 :
def search
@posts = Post.where("body like ?", "%#{params[:q]}%")
end
참고 일반적으로 사용하는 것을
resources :posts do
collection { get :search }
end
검색 양식을 다음과 같이 보일 것입니다 페이지 매김 (will_paginate 또는 kaminari)도 있으며, 전체 텍스트 검색 엔진을 고려할 수도 있습니다. 스핑크스.
라우트는 모델이 아닌 컨트롤러에 대한 것입니다. 게다가 나는 그런 경로에 주제 선택을 두지 않는 것이 좋습니다. 대부분의 레일을 올바르게 만드는 것은 올바른 영역에서 올바른 일을하는 것입니다.
표준 및 REST 기반 시스템은 그들이 종종 동일하다는 경향이 있습니다. 포스트 컨트롤러는 애플 리케이션/뷰/포스트에있는 뷰가있는 포스트 모델에 대한 레코드를 관리하지만 다른 것들입니다.
/:name
이 게시물로 이동하려면 # 검색은 괜찮습니다. 그러나 질문의 주제를 얻는 것이 게시물 컨트롤러 내에서 이루어져야한다고 생각합니다. 검색이 게시물 내에있는 경우 당신은 당신의 경로에 중첩 자원과 같이 사용할 수 있습니다
resources: :topics do
resources :posts, :member => :search
end