我有两个模型,Users
和Shifts
。
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"}
答案 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])
然后将其作为隐藏标记字段放在表单中。 (或者没有必要 - 我不确切知道)