Я новичок в Rails (и довольно плохо знаком с программированием в целом), и я создаю веб-приложение для себя, как способ обучения. Прямо сейчас я изменяю формы лесов и тому подобное.
Мой вопрос связан с методом create в одном из моих контроллеров. Есть две сущности, которые меня интересуют: таблица User и таблица Habit. Я создал раскрывающийся список в части _form для представлений Habit, чтобы позволить человеку выбрать пользователя из списка всех доступных при создании привычки, как показано ниже
<%= collection_select :user, :id, @users, :id, :first_name %>
Контроллер привычки, конечно, имеет
def new
@users = User.all
...
end
Это прекрасно работает, и при отправке формы она отправляет два хэша параметров: привычка и: пользователь. Теперь, когда я хочу обработать ввод формы в методе create, я не уверен, как правильно использовать синтаксис и назначить user_id для вновь создаваемой привычки. То, что я хочу сделать, это что-то вроде
def create
@habit = Habit.new(params[:habit], params[:user])
end
Это, конечно, неправильный синтаксис.
def create
@habit = Habit.new(params[:habit])
end
правильно назначает параметры из хэша: привычки, но затем user_id остается неустановленным.
Работает следующее, но код очень длинный, присваивая каждое значение вручную.
def create
@habit = Habit.new(:user_id => params[:user][:id],
:description => params[:habit][:description],
:habit_method => params[:habit][:habit_method],
:time_reqd => params[:habit][:time_reqd],
:will_reqd => params[:habit][:will_reqd],
:active => params[:habit][:active])
end
Таким образом, мой вопрос: при работе с формой, которая публикует данные в нескольких хэшах, как правильно передать эти параметры в некоторый метод в контроллере?