2010-08-01 4 views
0

나는 UserGroup 모델을 가지고 있습니다. belongs_toUser프런트 엔드에서 레일의 연결

Userhas_manyGroupsGroup은 이미 사용자 테이블의 항목이 있습니다

id name 
-------------- 
1  testuser 
2  someotheruser 

이 ID 1 (testuser)와 사용자가 로그인 상상해 경우와 그 사용자의 내부 그룹을 만들려고합니다.

나는 DB의 항목은 다음과 같이가는 그룹 컨트롤러의 새로운 액션에서 새 그룹을 만들 때 : 당신이 보는대로 연관이 그래서

id groupname user_id 
    ------------------------ 
    1 groupA 
    2 groupB 

이 USER_ID는, 열은 항상 빈에서 진행됩니다 거기 없어.

이 연결을 만들기 위해 필요한 작업은 무엇입니까? GroupsController에 대한

코드 :

def new 
    @group = Group.new 
    end 

    def create 
    @group = Group.new(params[:group]) 
    if @group.save 
     flash[:notice] = "Successfully created group." 
     redirect_to groups_url 
    else 
     render :action => 'new' 
    end 
    end 

코드

<% title "New Group" %> 

<% form_for @group do |f| %> 
    <%= f.error_messages %> 
    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 
    <p> 
    <%= f.label :description %><br /> 
    <%= f.text_field :description %> 
    </p> 
    <p><%= f.submit %></p> 
<% end %> 


<p><%= link_to "Back to List", groups_path %></p> 

views/groups/new.html.erb에 내가 레일에 새로운 오전 어떻게 사용자와의 연결을 만드는 방법을 가르쳐주십시오. 콘솔에서이 같은 사용자 그룹을 추가하여 연결을 만들 수 있어요 :

@u = User.find(1) 
@u.groups.create(:groupname=>"groupA") 
@u.save 

하지만 난이 프런트 엔드에서 수행 얻는 방법을 잘 모릅니다. 당신의 다른 절에서 : [오류]

def create 
    @group = Group.new(params[:group].merge!({:user_id => current_user})) 
    if @group.save 
    flash[:notice] = "Successfully created group." 
    redirect_to groups_url 
    else 
    render :action => 'new' 
    end 
end 

당신은 플래시 추가 할 수 있습니다 :

답변

0

먼저이 그룹은 사용자없이 저장할 수 없습니다 있는지 확인하는 것이 좋습니다 :

class Group 
    belongs_to :user 
    validates_presence_of :user 
end 

그런

/app/models/group.rb의 기본 수 있습니다 현재 사용자가 될 그룹.

/app/controllers/groups_controller.rb

def create 
    @group = Group.new(params[:group]) 
    @group.user = current.user 
    if @group.save 
    ... 
    else 
    ... 
    end 
end 

또한 @group.user = current_user if @group.user.nil? 할 수 있지만 현재 사용자 그룹에 해당하는 그룹을 만들 수있는 유일한 사람처럼 들린다.

+0

감사합니다. user_id로 숨겨진 필드를 전달하는 방법을 시도해 보았습니다.하지만이 방법이 훨씬 좋습니다. – Patrick

0

당신은 사용자 ID가 Group.new,이 같은 아마 뭔가에 전달 된 PARAMS의 일부입니다 있는지 확인해야합니다 그렇지 않으면 사용자가 설명없이 새 작업을 끝내는 것이 혼란 스러울 수 있습니다.

관련 문제