2011-12-27 26 views
0

我有两个模型,UsersShiftsRails传递数据以形成不同的模型

  • Users:ID,名称
  • Shifts:USER_ID,TIME_LENGTH

User的has_many Shifts; Shift belongs_to User。相当简单。

我想要做的就是添加一个链接到新Shift控制器视图(/shifts/new)我show用户控制器(/users/1)上的按钮。我设法用一个按钮来做到这一点,因为我想用我的Users模型中的信息预先填写表格(即通过user.id发送)。

我用下面的代码,它是连接正常,但不能工作了如何通过user.id细节

button_to "Create Shift", {:controller => "shifts", :action => "new"},{ :method => "get"} 

回答

0

可以在额外的参数传递给第二个参数,如下所示:

button_to "Create Shift", { :controller => "shifts", :action => "new", :user_id => user.id }, { :method => "get" } 

这应该产生这样/shifts/new?user_id=5的URL。

0

您可以使用Nested resources

在routes.rb中写:

map.resources :users do |users| 
    users.resources :shifts 
end 

然后为新的换挡形式的路径将是new_user_shift_path = /users/:id/shift/new

而且在shifts_controller你可以得到像这样的用户:

@user = User.find(params[:user_id]) 

然后,您将它作为隐藏标记字段放入您的表单中。 (或者不需要 - 我不知道)