Ruby on rails 从带有关联表的表单选择创建记录时遇到问题

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 %>

我是RubyonRails的新手,已经挣扎了一段时间。具体来说,我的问题是我有两个表:约会和服务。服务1有多个:约会,约会属于:服务1

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

<%= 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