Я использую рельсы 3.2, и я хочу предотвратить массовое присвоение. У меня родительские отношения.Пример родительской дочерней формы Rails, предотвращающий массовое присвоение
class Parent < ActiveRecord:Base
has_many :children
attr_accessible :name
end
class Child < ActiveRecord:Base
belongs_to :parent
attr_accessible :title
end
В моем ресурсе child.rb для маршрутов не вложен родительский ресурс. Теперь у меня есть ссылка для создания нового ребенка с new_child_path(@parent.id)
. Это направляет меня localhost:3000/child/new?parent_id=1
и я в конечном итоге в new
действия:
def new
@child = Child.new
@parent = Parent.find(params[:parent_id])
@child.parent = @parent
end
Мой вопрос: как написать мой _form.html.erb
для дочернего объекта? Я не могу использовать f.hidden_field
для parent_id
, потому что в моем действии на создание он распался из-за массового присвоения. С другой стороны, мне нужно передать parent_id
, чтобы узнать моего родителя, когда я спасу ребенка. Я не нашел для этого хорошего рабочего примера.
Я прочитал http://guides.rubyonrails.org/routing.html#nested-resources, но я следовал правилу: Ресурсы никогда не должны быть вложенными более чем на 1 уровень, поэтому я сбросил свои вложенные ресурсы. –
@ TomaszKalkosiński Обновленный ответ. – zsquare
Это решает проблему наличия parent_id в моем URL-адресе при создании книги. Жаль, что эта практика маршрутов не пользуется большой популярностью. Спасибо. –