将参数从hidden_​​field保存到模型

时间:2013-12-02 00:13:58

标签: ruby-on-rails ruby ruby-on-rails-3.2 ruby-on-rails-4

我正在尝试将service_name从隐藏字段保存到服务预订模型中的service_name列。服务有很多服务预订,有人可以帮忙吗?

///传递service_name以使用new_servicebooking_path

保存在servicebooking模型中
<%= link_to 'Book this service', new_servicebooking_path(service_name: @service.name) %>

///服务秀视图中的隐藏字段:

    <%= f.hidden_field :service_name, :value => @service.try(:name)  %>

///在servicebookings控制器的新方法中定义@service变量

def new
   @service = Service.find(params[:service_name])
   @servicebooking = @service.servicebookings.new
 end

//服务编辑表单

<%= f.hidden_field :service_name, @service.try(:name)  %>

//要保存的服务预订模型设置服务名称

after_validation :set_service_name

  def set_service_name
    self.service_name = service.try(:name)
  end

目前,服务预订模型中没有保存service_name

1 个答案:

答案 0 :(得分:1)

是服务模型的主键是名称而不是id?如果没有,我相信上面的代码在执行@service = Service.find(params[:service_name])

时会引发错误

你可以试试这个

在servicebookings controller

def new
  @service = Service.find_by_name(params[:service_name])
  @servicebooking = @service.servicebookings.new(service_name: params[:service_name])
end

在servicebookings编辑表单中

<%= f.hidden_field :service_name  %>