Rails передают данные в форму для другой модели - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть две модели, Users и Shifts.

  • Users: идентификатор, имя
  • Shifts: user_id, time_length

User has_many Shifts; Shift принадлежит_ User. Довольно просто.

Я хочу добавить кнопку на моем пользовательском контроллере show (/users/1), которая ссылается на новое представление Shift контроллера (/shifts/new). Мне удалось сделать это с помощью кнопки, поскольку я хочу предварительно заполнить форму информацией из моей Users модели (т.е. отправить через user.id).

Я использую следующий код, который отлично связывает, но не может понять, как передать user.id детали

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

Ответы [ 2 ]

0 голосов
/ 28 декабря 2011

Вы можете использовать Вложенные ресурсы :

В маршрутах .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])

Затем вы помещаете его в форму в качестве поля скрытого тега. (Или не будет необходимости - я точно не знаю)

0 голосов
/ 28 декабря 2011

Вы можете передать дополнительные параметры второму аргументу, например, так:

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

Это должно сгенерировать URL, например /shifts/new?user_id=5.

...