2011-05-16 124 views
0

我有兩個型號,組和用戶軌道 - 混淆路由,而params

用戶belongs_to的集團和 集團的has_many用戶

在我組/ show.html.erb我有用戶先簽後換表單

<h1>Create user</h1> 

<%= form_for @user do |f| %> 
    <%= render 'shared/error_messages', :object => f.object %> 
    <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :email %><br /> 
    <%= f.text_field :email %> 
    </div> 
    <div class="field"> 
    <%= f.label :password %><br /> 
    <%= f.password_field :password %> 
    </div> 
    <div class="field"> 
    <%= f.label :password_confirmation, "Confirmation" %><br /> 
    <%= f.password_field :password_confirmation %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Sign up" %> 
    </div> 
<% end %>  

拿到小組和用戶之間的關係,我在我的用戶控制器創建方法如下

def create 
    @group = Group.find(params[:group][:id])  
    @user = @group.users.build(params[:user]) 
    if @user.save 
     flash[:success] = "You have created a new user" 
     redirect_to group_path 
    else 
     @title = "Create user" 
     render 'new' 
    end 
end 

我也曾嘗試: @group = Group.find(PARAMS [:ID])

@group = Group.find(PARAMS [:GROUP_ID])

但我仍然出現錯誤

本質上,我想在group/show.html.erb中創建新用戶,並將該用戶與創建用戶的組相關聯。例如,如果用戶是以組/ 3創建的,那麼如何在控制器中將我的創建方法設置爲用戶以確保此關係成立?

一般來說,我一直在關注Hartl Rails教程手冊http://ruby.railstutorial.org/chapters/user-microposts#sec:creating_microposts,並遵循表單和創建方法。然而,我不知道如何獲得組/ 3的參數進入查找方法,如@group = Group.find(?????)

有人請賜教,這個問題一直困擾我一個現在幾天。

在此先感謝

+0

我有一種感覺,我可能需要在窗體中使用hidden_​​field_tag,以通過group.id但不知道如何做到這一點 – Zakoff 2011-05-16 21:23:14

回答

1

表單提交後,它將帶您到用戶#創建。此路線沒有group_id分段。

要傳遞group_id,需要將其存儲在表單中的隱藏字段中。

+0

我可以這樣做:<%= hidden_​​field_tag:group_id,:value => @group。 id%>,然後在我的用戶#create do this @group = Group.find(params [:group_id])? – Zakoff 2011-05-16 21:31:33

+0

現在已經解決了,我做了<%= hidden_​​field_tag:group_id,@ group.id%>,謝謝 – Zakoff 2011-05-16 21:39:17

+0

很高興你解決了它。乾杯。 – bassneck 2011-05-16 21:41:48