ruby on rails -设置父模型的值



我有两个模特,场地和演唱会。音乐会属于一个场地,场地有许多音乐会。在我的表单中,我使用自定义setter设置音乐会场地,表单看起来像:

<%= form_for @concert do |f| %>      
      <%= f.label :venue_name, "Venue" %>
      <%= f.text_field :venue_name %>

然后在我的模型中:

  def venue_name=(name)
    self.venue = Venue.find_or_create_by_name(name) if name.present?
  end

这样做的问题是,如果正在创建模型,我还想添加一个地址。这对孩子的表格有可能吗?是否有可能同时传递一个名称和一个地址给setter?

编辑:

正如下面的注释所建议的那样,我已经转向使用accepts_nested_attributes_for。Ryan Bates在这里有一个很好的屏幕截图:http://railscasts.com/episodes/196-nested-model-form-revised或者文档也很好。

我在此之前使用了accepts_nested,但由于这是在belongs_to方面,因此遇到了困难。我现在的修复是,对于这个例子,而不是使用@concert。构建,belongs_to的语法是@concert。build_venue

如果你告诉你的用户,他们可以添加名字和地址,用逗号,@,分号等分隔,在你的模型上,你可以使用正则表达式将它们分开,并分别插入它们。

def venue_name=(name)
  venue = name.split(',')[0] # The comma (,) can be any symbol
  address = name.split((',')[1]
  # Insert venue
  # Insert address
end

相关内容

  • 没有找到相关文章

最新更新