Ruby on rails 从带有关联表的表单选择创建记录时遇到问题
我是RubyonRails的新手,已经挣扎了一段时间。具体来说,我的问题是我有两个表:约会和服务。服务1有多个:约会,约会属于:服务1 在我的网站上,用户可以注册预约。在这种形式下,他们可以选择如下服务:Ruby on rails 从带有关联表的表单选择创建记录时遇到问题,ruby-on-rails,ruby,forms,select,model-associations,Ruby On Rails,Ruby,Forms,Select,Model Associations,我是RubyonRails的新手,已经挣扎了一段时间。具体来说,我的问题是我有两个表:约会和服务。服务1有多个:约会,约会属于:服务1 在我的网站上,用户可以注册预约。在这种形式下,他们可以选择如下服务: <%= f.label "Service" %> <%= f.select :service1, options_from_collection_for_select(Service1.all, :id, :name), :prompt => true %>
<%= f.label "Service" %>
<%= f.select :service1, options_from_collection_for_select(Service1.all, :id, :name), :prompt => true %>
结束
select将名称存储为字符串,我很确定约会模型需要id。
有了这些代码,我在@appointment.service1行上得到了这个错误消息:nil:NilClass的未定义方法'id'
如果我去掉那行,那么我会得到一条闪光的错误消息,service1为空
请帮我解决这个问题!
谢谢大家! 您没有名为“Service1”的Service1。“按名称查找”将返回零 更新以回应您的评论: 您发布的第一个代码片段:在表单中,对吗?我想您需要params[:object\u key][:service1],其中:object\u key是表单所基于的记录的名称
我很确定有一个更简单的方法来做你正在做的事情。不过,我还需要看更多的代码。谢谢,那么如何让它从f获取输入。选择并传递它以按名称查找?是的,它在表单中_for@appointment. 我会把它放在表格或控制器的
@appointment = Appointment.new(params.require(:appointment).permit(:date, :start, :stylistpref))
@appointment.service1 = Service1.find_by_name(:service1).id
@appointment.user = current_user
if @appointment.save
flash[:success] = "Appointment Booked for " + @appointment.date + @appointment.time
redirect_to(root_url)
else
render 'new'
end