Rails将数据传递给不同模型的表单

时间:2011-12-27 21:53:23

标签: ruby-on-rails forms rest formtastic

我有两个模型,UsersShifts

  • Users:id,name
  • Shifts:user_id,time_length

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

我想要做的是在我的show用户控制器(/users/1)上添加一个链接到新Shift控制器视图(/shifts/new)的按钮。我已设法通过按钮执行此操作,因为我想使用Users模型中的信息预填充表单(即通过user.id发送)。

我正在使用以下代码,链接正常,但无法解决如何传递user.id详细信息

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

2 个答案:

答案 0 :(得分:0)

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

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

这应生成类似/shifts/new?user_id=5的网址。

答案 1 :(得分: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])

然后将其作为隐藏标记字段放在表单中。 (或者没有必要 - 我不确切知道)