Не удается массово назначить защищенные атрибуты: - PullRequest
1 голос
/ 14 марта 2011

Я вырвал все мои волосы.Больше не осталось ...: (*

Я использую 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

Проблема в том, что ритейлерские поля никогда не проверяются, а данные никогда не вставляются вбаза данных ...

Я создал пустое приложение и попробовал этот процесс с нуля на каких-то старых старых лесах, и он отлично работает.

любые идеи ??

1 Ответ

1 голос
/ 14 марта 2011

В вашем помощнике приложения сделайте что-то вроде этого (при условии, что у вас есть 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| %>

Посмотрите, работает ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...