1

我已经拔掉了我所有的头发。没有了... :(

我正在使用 Spree 0.3.4,在扩展中我需要注册一些零售商。所以我将他们引导到一个零售商表单,该表单具有许多属于零售商模型的自定义字段......

所以我试图从一个表单中验证/提交所有字段,就像这样

myextension/app/views/user_registrations/new.html.erb

<%= form_for (:user, :url => registration_path(@user, :type => "retailer) do |f| %>
  <%= f.fields_for :retailer do |r| %>
    <%= r.text_field :name %>
  <% end %>
  <%= f.text_field :email %>
<% end %>

等等等等

class Retailer < ActiveRecord::Base

 belongs_to :user

 validates :name,
           :presence => true

end

class User < ActiveRecord::Base

 has_one :retailer
 accepts_nested_attributes_for :retailer

 attr_accessible :retailer_attributes


 # theres a whole lot more spree and devise stuff here. not sure worth mentioning

end

我还在 cancan 能力.rb 中添加了能力

问题是零售商的字段永远不会得到验证,数据也永远不会插入数据库......

我创建了一个空白应用程序,并使用一些普通的旧脚手架从头开始尝试这个过程,它工作正常。

有任何想法吗??

4

1 回答 1

1

在您的应用程序助手中,执行以下操作(假设您有 Ruby 1.9.* 用于点击功能,否则结帐导轨返回此处):

  def setup_user(user)
    user.tap do |u|
      u.build_retailer if u.retailer.nil?
    end
  end

然后在您看来,将其更改为:

<%= form_for (setup_user(@user), :url => registration_path(@user, :type => "retailer) do |f| %>

看看这是否有效。

于 2011-03-13T23:49:15.110 回答