問題タブ [acts-as-tree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
769 参照

ruby-on-rails - act_as_tree を使用するリソースのネストされたルートを構築する

次のような動的ルートを生成する方法を知っていますか?

この質問をするのFolderは、ツリーとして機能するモデル (parent_idフィールドがある) があり、そのto_paramメソッドnameparent_id. したがって、 each:parent_idおよび event は:idですname。パスの例を次に示します (4 つのサブフォルダーを含む):

...最初の:parent_id(ルート) は「home」で、:id「foobar」です。

ルートの別の例は次のとおりです (1 つのサブフォルダーを使用):

...どこで、ご覧のとおり、params[:parent_id] == 'home'そしてparams[:id] == 'music'.

この種の可能なネストされたルートを処理する美しいRails 3ルートを書くきれいな方法はありますか? ありがとう!!

0 投票する
1 に答える
357 参照

ruby-on-rails - Rails3でツリーとして機能します

Rails3でacts_as_tree_on_steroidsの問題に直面しています。ツリーと同じようにRails3で役立つプラグインはありますか?

app / controllers / question_attributes_controller.rb:9:in `index '

レンダリングされた/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/_trace.erb(0.8ms)レンダリングされた/usr/local/lib/ruby /gems/1.9.1/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb(6.5ms)レンダリングされた/usr/local/lib/ruby/gems/1.9.1/gems/ a.descendantsのrescues/layout内のactionpack-3.0.3/lib / action_dispatch / Middleware /テンプレート/rescues/diagnostics.erb

0 投票する
0 に答える
227 参照

ruby-on-rails - RoR & ACTS_AS_Tree & データベースからの表示ページと表示コンテンツの表示

全て、

仕事用の RoR アプリに取り組んでいます。最後に、データベース接続で動作するツリーとして機能するようになりました (railscast.com エピソード 162)。データベース内のコンテンツの表示から page.content データベース エントリのコンテンツへのリダイレクトに移行しようとしています -- 何かアイデアはありますか? 表示アクションをダイスなしのredirect_toに単純に置き換えてみました。あちこちでグーグル検索 - 時間外 - 助けて..

私のフローは次のとおりです。

・サブメニューの表示、問題なし ・ブレッドクラムの表示、問題なし ・ページ名の表示、問題なし(一度リダイレクトを削除することを想定) ・page.content: <%= simple_format @page.content %> の内容の表示 問題なし

問題は、 @page.content のコンテンツにリダイレクトして表示したくないことです。または、別のコントローラー アクションに移行することもできますが、コンテンツを表示するだけでなく、ナビゲーション メニューを使用して (既に存在する) 別のページに移動できるようにする必要があるという考えです。アイデア?

ありがとう、アダム

0 投票する
1 に答える
523 参照

ruby-on-rails - 動的Acts_as_treeカテゴリリストのキャッシュ

私はacts_as_treeを使用するCategoryモデルを持っています

カテゴリツリーを表示するときは再帰を使用しますが、(一部のチェックボックスがオンになっているかどうかを除いて)毎回ほぼ同じ部分が生成されるため、多数のデータベース呼び出しが必要になります。

これをキャッシュしたいのですが、現時点で考えられるのは、Category.allを新しい非ActiveRecordデータ構造にダンプして、呼び出しの数を減らすことだけです。もっと良い方法はありますか?

index.html.erb

_category_checkboxes.html.erb

_category_checkboxes_children.html.erb

0 投票する
2 に答える
577 参照

ruby-on-rails - Acts_as_treeとhas_many:一緒にうまく機能しないことを通して

私は次のものを持っています:

編集#3-シードデータサンプルこれは、たとえば、シードの方法です(mi_1とmi_2の両方を取得したい)

終了編集#3

問題は、すべてのmenu_itemsを返すために次のことを実行できないことです。

メニューのhas_many:throughの場合。これにより、最上位レベルのメニュー項目のみが取得され、より深いレベルは取得されません。menu_idをmenu_headersに追加しようとしましたが、これにより、commented_out行を追加する必要があり、トップレベルのヘッダーのみを取得するようになりました。上記が機能するように、menu_headerのより深いレベルをすべて取得すると言う方法はありますか?

これまたは他の何かに対する回避策はありますか?私はacts_as_treeにかなりこだわっているので、awesome_nested_setのようなものを使用することは実際にはカードに含まれていません。

どうも

編集-以下のコメントのいくつかの問題。私はこれを午前4時に書きました

編集#2
私はこれを介してすべての子供を得ることができます:

all_childrenを呼び出して、メインメニュー項目でmenu_itemsを取得できるようにしたいと思います。おそらく、上記をメインのメニュー項目の呼び出しと統合し、menu_itemが更新されたときに、キャッシュされたコピーをメニューテーブルに保存するだけです。

Ancestryを調べますが、他のコードがこれに依存しているため、別のgemに移動することを躊躇します。すばやく実行できれば問題ないかもしれませんが、これは他の多くの部分を含むかなり複雑なオブジェクトであり、acts_as_treeはかなり単純です。

編集#4-サンプルデータは次のとおりです。

どうも

0 投票する
1 に答える
5410 参照

ruby-on-rails - 樹木メニューのacts_as_treeと祖先の宝石

作業中のRailsアプリにツリーメニュー(ツリーメニューの簡単な例)を実装したいと思います。acts_as_treeとAncestryのどちらを使用するかわかりません。Acts_as_treeを使用して単純なツリーメニューを実装する方が簡単なようですが、Ancestryの方が人気があり、定期的に保守されています。誰かがこれについて何か考えを持っていますか?

0 投票する
2 に答える
338 参照

ruby-on-rails - Acts_as_treeおよびサブヘッダーを介してアイテムに値を伝播する

私は少し複雑なモデルを持っており、レールについての私の限られた理解で完全な機能を実現したいと思っています。

セクション、ヘッダー(acts_as_treeを使用)、およびアイテムがあります。

私はjsonを使用してデータセットを取り込みます。これは非常にうまく機能しました。'is_shippable'などのデータセット全体の属性を取り込むことができるようにしたいと思います。ツリーの任意の場所でis_shippable値を指定し、trueに設定できるようにしたいと思います。また、ヘッダーまたはアイテムレベルでオーバーライドして、falseに設定できるようにしたいと思います。

セクション、ヘッダー、およびアイテムの属性としてis_shippableを指定し、before_createコールバックを使用して、is_shippableにする必要があるかどうかを判断するのが理にかなっていると判断しました。

例えば:

サンプルjson:

}

header.rb内

item.rbで

私がやっていることよりもこれを行うためのより良い方法はありますか?階層の上位でis_shippableがtrueに設定されている場合、is_shippableがfalseに設定されているかどうかをチェックするifステートメントを実行するにはどうすればよいですか?

編集-is_fragile、is_custom_sizeなどのis_shippableの機能もあります...

0 投票する
4 に答える
488 参照

ruby-on-rails - 入れ子になったリソースを持つ単純なActs_as_tree

Rails3.1.1とgemacts_as_treeを使用します。私はこの問題をグーグルで検索し、ここSOで同様の質問を確認しました(回答が古すぎるか、無関係です)。

今日のルートが次のような記事というモデルがあります。

「book」、「chapter1」、「chapter2」の3つの記事があります。本がchapter1とchapter2の親である場合。

今日、各記事への私の道は、host.com / book、host.com / chapter1、host.com/chapter2です。URLパスをhost.com/book/chapter1とhost.com/book/chapter2、つまりネストされたルートにします。

どうすればこれをクリーンでシンプルな方法で作成できますか?

基本的に、host.com /:parent_id /:parent_id /:idで、N個の:parent_idを持つパスが必要です。Wordpressの記事がルーティングされる方法とほぼ同じです。

ルートグロバーが解決策だとは思いませんが、間違っているかもしれません。host.com/:idとhost.com/foo/bar/:idで同じ結果が得られるようで、コンテンツが重複します。

0 投票する
1 に答える
2586 参照

ruby-on-rails - Acts_as_treeとrails3.2.3、互換性がありませんか?

Rails3.2.3とacts_as_tree1.1.0を使用しています。以前のバージョンのRails3(3.1.1など)でいくつかの異なるプロジェクトにacts_as_treeを問題なく使用してきましたが、このバージョンではまったく機能しません。私が使っているのが3.2.3か何かのせいなのなら、私は確認できませんでした。

これは私が試したことですが、役に立ちませんでした:-いくつかの異なるコントローラーでacts_as_treeを使用する-acts_as_treeのみを使用する(orderステートメントなし)-バンドルインストールとバンドル更新を実行する-parent_idが存在し、整数であることを再確認する

まず、これを試したとき、最初に試しました。

ページをリロードする(そして他に何もしない)と、次のようになります。

次にサーバーを再起動すると、起動に失敗し(アプリがクラッシュして起動しません)、次のエラーが発生しました。

これは、Rails3.2.3とacts_as_treeの間に互換性の問題があると推測させます。しかし、これを確認する方法はわかりません。

どのようなオプションがありますか?Rails 3.2.3を使用する必要はありませんが、3.1.1にダウングレードした場合。(私が試した)私はもっと悪いように見える他の問題に遭遇します(「ファイル設定」は同じではないようです)。

だから、私のオプションは何ですか?これも経験したことがありますか?Acts_as_treeに何か問題がありますよね?

0 投票する
1 に答える
175 参照

ruby-on-rails - Railsコントローラーにerbコードを実装しますか?

モデルを json にレンダリングし、acts_as_tree を使用するときにそのノードを含めたいと考えました。この投稿を見つけて、大いに役立ちました:acts_as_treeおよびto_jsonまたはfrom_json

私の唯一の質問は、これをコントローラーに実装する方法です。コントローラーでjsonを返したい。

これまでのところ、私はこれを持っています:

しかし、@categories を返す前に、これを呼び出したいと思います:<%= @categories.select { |c| c.root? && !c.leaf? }.collect { |c| category_to_spacetree_json(c) }.to_json.html_safe %>しかし、これはビューからしか呼び出せないようです。

コントローラーからこれを行うにはどうすればよいですか?

ありがとう!