【发布时间】:2011-12-18 22:36:40
【问题描述】:
我是 Rails 的新手(对一般的编程也很陌生),我正在为自己构建一个 Web 应用程序作为一种学习方式。现在我正在修改脚手架形式等。
我的问题是我的一个控制器中的“创建”方法。我关心两个实体:用户表和习惯表。我在 _form 部分中为习惯视图创建了一个下拉框,以允许人们在创建习惯时从所有可用列表中选择用户,如下所示
<%= collection_select :user, :id, @users, :id, :first_name %>
习惯控制者当然有
def new
@users = User.all
...
end
这很好用,当表单提交时,它会发布两个散列参数:habit 和 :user。现在,当我想在 create 方法中处理表单输入时,我不确定如何正确使用语法并将 user_id 分配给新的创建习惯。我想做的是这样的
def create
@habit = Habit.new(params[:habit], params[:user])
end
当然,这是不正确的语法。
def create
@habit = Habit.new(params[:habit])
end
正确分配 :habit 散列中的参数,但未设置 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
所以我的问题是,在处理以多个散列形式发布数据的表单时,将这些参数传递到控制器中的某个方法的正确方法是什么?
【问题讨论】:
标签: ruby-on-rails-3 forms parameters controller