Код, который Вы отправили, похож на него, должен правильно удалить аутентификационный маркер форм, таким образом, возможно, что рассматриваемые папки/страницы на самом деле не защищены.
Вы подтвердили, что к страницам нельзя получить доступ, прежде чем вход в систему произошел?
можно ли отправить web.config настройки и войти ли в систему код, который Вы используете?
Это распространенная проблема циклической зависимости. Существует существующий билет LightHouse , который стоит проверить.
Я ожидаю, что он будет значительно улучшен в Rails 3, но пока вам придется найти обходной путь. Одно из решений - настроить виртуальный атрибут, который вы устанавливаете при вложении, чтобы сделать проверку условной.
class Note < ActiveRecord::Base
belongs_to :product
validates_presence_of :product_id, :unless => :nested
attr_accessor :nested
end
А затем вы должны установить этот атрибут как скрытое поле в вашей форме.
<%= note_form.hidden_field :nested %>
Этого должно быть достаточно, чтобы иметь ] вложенный атрибут
устанавливается при создании заметки через вложенную форму. Непроверено.
Лучшее решение - использовать плагин parental_control: http://github.com/h-lame/parental_control
Раствор Райана на самом деле очень круто. Я пошел и сделал моим контроллером толще, чтобы это гнездо было бы появиться в виду. В основном потому, что мой взгляд иногда JSON, поэтому я хочу быть в состоянии сойти как можно меньше там.
class Product < ActiveRecord::Base
has_many :notes
accepts_nested_attributes_for :note
end
class Note < ActiveRecord::Base
belongs_to :product
validates_presence_of :product_id unless :nested
attr_accessor :nested
end
class ProductController < ApplicationController
def create
if params[:product][:note_attributes]
params[:product][:note_attributes].each { |attribute|
attribute.merge!({:nested => true})
}
end
# all the regular create stuff here
end
end