0

Rails 3.2 を使用しており、一括割り当てを防止したいと考えています。親子関係があります。

class Parent < ActiveRecord:Base
    has_many :children
    attr_accessible :name
end
class Child < ActiveRecord:Base
    belongs_to :parent
    attr_accessible :title
end

私の routes.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私の質問は:子エンティティに対してmy を記述する方法は? 私の作成アクションでは、一括割り当てのために分割されるため、f.hidden_field使用できません。parent_id一方、parent_id子供を救うときは、親を知るために通過する必要があります。これについては、適切な実例が見つかりませんでした。

4

1 に答える 1

1

Rails のネストされたリソースをよく読んでください。

いくつかのリンク:

http://railscasts.com/episodes/139-nested-resources

-- 編集 1 --

複数レベルのネストがないというコメントに基づいて、次のルート構成を使用することもできます。

resources :grandparents do
    resources :parents
end

resources :parents do
    resources :children
end

このようにして、複数レベルのネストのオーバーヘッドなしで、親子関係を維持できます。コントローラーの名前空間をクリーンに保つために、次のようにすることもできます。

resources :grandparents do
    resources :parents, :controller => "grandparent/parent"
end

resources :parents do
    resources :children
end
于 2012-05-30T12:17:32.237 に答える