2013-06-12 1 views
0

댓글 scaffold와 영화 비계가 있습니다.FriendlyID 슬러그를 해당 ID로 번역

사용자가이 경로/영화/더 - 소셜 네트워크에 동영상에 댓글을 달 수/의견/새

내 문제는 의견이 작동하고 영화와 연결 movie_id를 사용한다는 것입니다.

그럼 내가 묻는 것은 social-network을 movie_id로 전달하는 방법입니다.

PS : 임 친절한 아이디 4

답변

0

를 사용하여 당신은 to_param를 사용할 수 있습니다. 예를 들어, movie_name 경우 '는 사회적 네트워크'는,이 작동합니다

class Movie < ActiveRecord::Base 
    def to_param 
    movie_name 
    end 
end 
1

먼저 the-social-network처럼 "슬러그"로 Movie을보고 싶어하기 때문에, 당신은 FriendlyId를 확장하고 그것을 말할 필요 idslug이라는 속성으로 매개 변수화하십시오. 다음과 같이 :slugged을 전달하여이 작업을 수행 :

# change migration file 
class AddSlugToMovies < ActiveRecord::Migration 
    def change 
     add_column :movies, :slug, :string 
     add_index :movies, :slug 
    end 
end 
:

# in console 
rails g migration add_slug_to_movies slug:string 

인덱스로 slug를 추가 할 마이그레이션 파일을 수정

# app/models/movie.rb 
class Movie < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :title, use: :slugged 
end 

을 그리고, Movie 개체에 대한 slug를 저장하는 마이그레이션을 생성

마지막으로 데이터베이스에있는 모든 기존 영화의 슬러그를 만들어야합니다. 각 영화 하나씩 저장하여이 작업을 수행 할 수 있습니다 : 당신이 이런 짓을 것입니다 후

# in Rails console 
Movie.find_each(&:save) 

, 당신은 /movies/the-social-network/comments/new 유사 Movie에 조회를 할 수 있어야합니다.

데이터베이스에서 제목이 변경 될 때 개체의 슬러그가 올바르게 업데이트되는지 확인하는 것을 포함하여 자세한 내용과 예제를 보려면 this Railscast을 확인하십시오.