2012-10-14 3 views

답변

1

세션 (서버 측)에서 user_id를 가져 오지만 매개 변수 (클라이언트 측)는 가져 오지 않습니다.

def new 
    @project = Project.new(:person_id => session[:current_user_id]) 
end 

또는 인터페이스가 더 제한합니다

def new 
    @project = Project.create_for_current_user(session) 
end 

def Project.create_for_current_user(session) 
    return Project.new(:person_id => session[:current_user_id]) 
end 
+0

도움 주셔서 감사합니다. – Tintin81

1

이에 대한 암시 적 권한을 사용하는 것이 좋습니다. 새로운 프로젝트가 자동으로 사용자에 의한 것이다이 방법으로

resources :people do 
    resources :projects 
end 

:

다음
# GET people/1/projects/new 
def new 
    user = User.find(session[:current_user_id]) 
    @project = user.people.find(params[:person_id]).projects.build(:title => "New Project") 
end 

# POST people/1/projects 
def create 
    user = User.find(session[:current_user_id]) 
    user.people.find(params[:person_id]).projects.create(params[...]) 
end 

routes.rb의 : 같은 최종 결과가 보일 것입니다.

참고로, 각 작업에서 User.find을 수행 할 필요없이 현재 사용자에게 더 편리하게 액세스 할 수 있도록 Devise 또는 before_filter와 같은 것을 사용하는 것이 좋습니다.

또한 컨트롤러 동작에 추가 @title 변수가 없어야합니다. 각 컨트롤러 동작은 리소스 또는 리소스 모음을 공유해야합니다.

관련 문제