-1

ちょっとそこに、私は私の最初のRailsプロジェクトでネストされたセットのドラッグアンドドロップインターフェイスを実装しようとしています。私はレールに慣れていないので、我慢してください。私のコードは基本的にこのプロジェクトと同じです: http://gist.github.com/128779。私の問題はこの行の部分にあります:

<% for child in root.direct_children do %>

direct_childrenのインスタンスメソッドであるNoMethodErrorを取得しているacts_as_nested_setと思います。コンソールでモデルの新しいインスタンスを作成しようとすると、同様にacts_as_nested_setインスタンスメソッドにアクセスできないため、問題は部分的なものではなく、モデルにあると思います。

繰り返しになりますが、私の用語が間違っている場合は申し訳ありませんが、私はRailsを初めて使用します。とにかく、私は何が間違っているのですか?acts_as_nested_set上記の要点の例のように、モデルに「 」が含まれていますが、モデルがネストされたセットとして機能していないようです。これを修正するにはどうすればよいですか?

ありがとう!

私が使用しているモデル(todo.rb)のコードは次のとおりです。

class Todo < ActiveRecord::Base
  acts_as_nested_set
end

そしてここに部分があります:

<% content_tag :li, :id => dom_id(root) do %>
    <%= content_tag :span, root.text %>
    <% content_tag :ul do %>
        <% for child in root.direct_children do %>
            <%= render :partial => "tree", :locals => {:root => child}%>
        <%end %>
    <%end unless root.direct_children.empty? %>
<%end%>

root次のようなビューからパーシャルに渡されます。

<%= render :partial => "tree", :locals => {:root => @root} %>

次のようにコントローラーで@root定義されます。

@root = Todo.find_by_parent_id(nil)

繰り返しになりますが、コードはほとんどの場合、上記の要点リンクからの変更をほとんど加えずに大規模にコピーされます。

4

2 に答える 2

1

いくつかのこと:

  • プラグインが正しくインストールされていることを確認しましたか?./script/plugin install git://github.com/rails/acts_as_nested_set.git
  • テーブルを正しくセットアップしましたか?モデルには、デフォルトで少なくとも次の 3 つの列が必要です (オーバーライドする場合を除く): parent_idlftrgt。これらacts_as_nested_setがなければ、何が起こっているのかを理解するのに苦労するでしょう. このファイルの先頭にあるドキュメントを読むことをお勧めします。なぜなら、readme にはスクワットとは書かれておらず、その要旨も書かれていないからです。
  • 上記を行った場合、ルート要素を作成し (parent_idを何も設定せずに)、それに少なくとも 1 つの子を追加しましたか?

    m = Model.new
    m.title = "My model's title"
    m.save!
    m2 = Model.new
    m2.title = "My child"
    m2.save!
    m.add_child(m2)
    

m.root?上記を使用して簡単なテストを行ったところ、その後、やなどのことができましたm.direct_children。幸運を。

于 2009-09-07T21:08:39.023 に答える
0

私があなたのタイトルから作っているのは、acts_as_nested_setよりもかなり多く使用しているということです。いくつかのプラグインを削除して、再試行してください。

于 2009-09-07T18:12:07.803 に答える