問題タブ [draper]

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 に答える
76 参照

javascript - ajax の実装に問題があります。if ステートメントが機能しない

私が何を求めているのかを正確に知るためにここで何が問題なのかはわかりませんが、最善を尽くします。問題を明確にするために、問題があると思われる場所を太字にしてみました。

初めてajaxを扱っています。アプリで、ユーザー (1) がユーザー (2) を検索し、ユーザー (2) を見つけると、ユーザー (1) は [関係を追加] ボタンをクリックして関係要求をユーザー (2) に送信します。[関係を追加] ボタンはすぐに [関係をリクエスト] に変わり、ページを更新すると、ボタンは [関係を編集] に変わります。

「関係の追加」 = まだ関係が存在しない 「関係がリクエストされました」 = 保留中の関係が存在し、成功のフラッシュ メッセージのように動作します 「関係の編集」 = 保留中の関係が存在するか、承認された関係が存在します

ブラウザページを更新するとボタンが「関係の編集」に変わる最後の部分を除いて、すべて機能しています。代わりに「関係を追加」が表示されます

この「関係の編集」ボタンが表示されないというアイデアはありますか? ステート マシン、ドレーパー、および js-routes gem を使用しています。

ビュー/ユーザー/インデックス:

user(2) を検索すると、その名前が表示され、名前の横に「関係を追加」、「関係を編集」、または「関係を要求」ボタンが表示されます。

ここでの if ステートメントは、機能していないと思います。保留中か承認済みかに基づいて関係を見つけられないのはなぜですか?

コントローラー/ユーザー:

関係.js:

モデル/ユーザー:

関係/デコレーター:

編集:

データベース/移行:

モデル/関係:

端末出力:

私 (ユーザー 1) がユーザー example-24 (ユーザー ID = 25) を検索し、「関係の追加」ボタンを押すとどうなりますか (sqlitebrowser に示すように: (これに関連する 2 行については、画像の下部を参照してください)例)

データベース関係テーブル

編集:

ユーザー/コントローラー:

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

ruby-on-rails - rspec で draper デコレータを指定する方法。

デコレータの個々の関数の仕様を書こうとしています。次のようなヘルパーの仕様があります (これは単なる例です)。

book_helper.rb

book_helper_spec.rb

次のデコレータが与えられた場合、関数の仕様をどのように記述できますか?

book_decorator.rb

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

ruby-on-rails-4.1 - コントローラでデコレータAdmin::ExampleDecoratorにアクセスする方法は?

draper gem を使用してデコレータを生成し、デコレータを作成しました。デコレーターフォルダー内で名前空間を使用しましたが、decorates_assigned を使用して特定のコントローラーでそのデコレーターにアクセスしようとしました。

たとえば、私のフォルダー構造は decorators/admin/example_decorator.rb です

そして、コントローラーに次の行を追加しました。

そして実際に私は書いた

しかし、次のエラーが発生します。

このエラーが発生する理由がわかりません。

Decorator で名前空間はどのように機能しますか?

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

ruby-on-rails-4 - Draper デコレータ gem を使用して 3 つの異なるフィールドの日付形式を装飾する方法

デコレータ パターンを使用して 3 つの日付を装飾したい。デコレータ パターンを実装するために必要な手順を実行しました。デコレータに次のコードを記述して、日付フィールドを装飾しました。

とビュー私は次の方法で呼び出しています

したがって、上記のデコレーターで記述されたすべてのメソッドは同じタスクを実行しているため、それと、1 つのフォーマット メソッドのみを含む 1 つのベース デコレーターをリファクタリングしたため、上記のデコレーターはベース デコレーターを継承します。

お気に入り

私のサブデコレータはこのようになっています

だから今私の質問はサブデコレータにあります同じコードが繰り返されているので、コードをリファクタリングしたいのですが、コードをどのようにリファクタリングすればよいですか?

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

ruby-on-rails - Rails フォーム ビルダーと Draper の使用

ヘルパーの代わりとして Draper を試してみます。情報をフォーマットしているだけの場合があります。しかし、Rails フォーム ビルダーとのやり取りはどうでしょうか。たとえば、コンテキストに応じて文字列または選択ボックスを出力したい場合。フォームビルダーを引数として渡しますか? だから私のデコレータで:

次に、私の見解では:

もっとエレガントな方法はありますか?

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

ruby - 装飾されたオブジェクトの同等性をより適切にテストするにはどうすればよいですか?

RSpec と Draper で装飾されたオブジェクトの等価マッチャーに問題があります。

何が起こっているかを示す仕様:

RSpec にはいくつかの異なる等価チェッカーがあることは知っていますが、それeqは「最も弱い」ものですが、同じクラスを持たないことは問題になると思いました。

ご覧のとおり、Draper の matchers のおかげで、このケースの回避策があります。しかし、そのテストが失敗するためには、何かが欠けているに違いないと感じています。

質問:

should pass, but doesn'tテストに合格するには、どの等価マッチャーを使用すればよいですか?

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

ruby-on-rails - Draper Gem が Undefined method エラーになる

私はドレーパーを使用していくつかの成功を収めました。しかし、現在私は立ち往生しています。

私は2つのモデルを持っています:

クラスが正常にロードされた場合、期待どおりに動作します。

Draper を使用してオブジェクトを装飾すると、未定義の「number_banned」メソッドが返されます。

注意します:

  • どちらのデコレータにも delegate_all オプションが含まれています
  • FooDecorator decores_association :bars

私が間違っていることはありますか?

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

ruby-on-rails - デコレータが失敗するのはなぜですか?

デコレータに問題があります:

このデコレーターをテストするたびに、次のエラーが表示されます。

ReviewDecorator#author はレビュー著者の氏名を表示します Failure/Error: expect(review.author).to eq 'John Doe' NoMethodError: undefined method firstname' for nil:NilClass # ./app/decorators/review_decorator.rb:7:inauthor' # ./spec/decorators/review_decorator_spec.rb:10:in `block (3 レベル)の '

Rspec テスト:

私が間違っていることは何ですか?