从具有关联表的表单选择中创建记录时出现问题



我是RubyonRails的新手,已经挣扎了一段时间。具体来说,我的问题是我有两张表:预约和服务1。服务1有_many:约会和Appointment belongs_to:Service1。

在我的网站上,用户可以注册预约。在这种形式下,他们可以选择这样的服务:

<%= f.label "Service" %>
  <%= f.select :service1, options_from_collection_for_select(Service1.all, :id, :name), :prompt => true %>

在预约控制器中,我有:def创建@造型师=["Zoe Andreadis","Amanda Giorgi","Michelle Oda","Danny Quaranta","Demi Tsionis","Christina Vicencio","Nancianne Warren"]

 @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

结束

f.select将名称存储为字符串,我确信约会模型需要id。有了这个代码,我在@appointment.service1行收到了这个错误消息:nil:NilClass 的未定义方法"id"

如果我去掉了那行,那么我会得到一条flash错误消息,service1为空。

请帮我解决这个问题!非常感谢。

您没有名称为"Service1"的Service1。find_by_name带着nil 返回

根据您的评论进行更新

你发布的第一个代码片段:在表单中,对吗?我想你想要params[:object_key][:service1],其中:object_key是表单所基于的记录的名称。

不过,我相信有一种更简单的方法可以做你正在做的事情。不过我还得看更多的代码。

相关内容

  • 没有找到相关文章

最新更新