問題タブ [actioncontroller]

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 投票する
7 に答える
27390 参照

ruby-on-rails - Rails ActionMailerのホスト名を構成するにはどうすればよいですか?

私はかなり伝統的な忘れられたパスワードの電子メールに取り組んでいます-パスワードを変更するためにクリックできるリンクに埋め込まれたパスワード変更トークンをユーザーに電子メールで送信したいと思います。従来のActionMailer経由でメールを送信しています。

通常のlink_toタグを使用する場合

私は相対的なリンクを取得します-電子メールからはかなり役に立たないです。

追加した場合

:only_path => false、次に設定する必要があるというエラーが表示されdefault_url_options[:host]ます。ActionControllerのドキュメントは、コントローラーの#default_url_optionsメソッドをオーバーライドすることでこれを行うことを示しています。確かに、独自の構成ファイルを追加したり、解析したりせずに、ホスト名が何であるかをRailsに伝える構成オプションはありますか?

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

ruby-on-rails - 初期化されていない定数 ActionController::Dispatcher::MiddlewareStack

テスト用にいくつかの新しい gem をインストールしましたが、初期化されていない定数の ActionController::Dispatcher::MiddlewareStack エラーが発生しました。gem rdocs の指示に従い、environment.rb ファイルで gem の依存関係を指定し、rake gems:install と rake gems:unpack を実行しました。

また、自分の environment.rb ファイルを一度に 1 行ずつ別のプロジェクトにコピーしましたが、エラーは発生しませんでした。他に何がうまくいかないのだろうと思っていました。

エラーの長いバージョンを次に示します (最初に簡単なテストを実行しているときにエラーに遭遇しました。「active_support」を要求すると、コンソールで同じことが起こります)。

これが私の environment.rb ファイルです(デフォルトのコメントは削除されています):

0 投票する
3 に答える
215 参照

asp.net-mvc - アクション コントローラーのコードがアマチュアっぽい

初投稿時間、

私は MVC abit をいじっています...複数の入力フィールドを持つビューがあります。これらのフィールドのいくつかは投稿時に空白になる可能性があります。

投稿のコントローラー内のアクション メソッドは次のようになります。

私は自分のデータベースで動的な Linq クエリを実行するために動き回っている DynamicQuery 拡張機能を使用しており、実行のためにデータ アクセス レイヤーに渡される Search オブジェクトにこれをカプセル化しました。

ただし、入力値とクエリの結果を表示するためにビューに戻されるカスタマイズされた ViewData オブジェクトもあります。

Search オブジェクトのプロパティと ViewDatas の両方を設定する必要があるため、コードは少し厄介に見えます。

私はこれを考えすぎていて、実際には値をデータ アクセス レイヤーに渡してコントローラーに ViewData を入力するだけでよいのでしょうか、それとももっと洗練されたパターンやプラクティスを使用できるでしょうか?

これがでたらめのように思われる場合は申し訳ありませんが、アイデアを跳ね返す人やフレームワークを掘り下げる時間はありません。

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

ruby-on-rails - Ruby On Rails によるトランザクション アクション

データベースに対していくつかの更新クエリを実行する複雑なアクションがコントローラー内にあります。

構造的なリファクタリングを行わずに、このアクションをトランザクションのように機能させるにはどうすればよいですか?

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

ruby-on-rails - Rspec の redirect_to ルートが期待どおりに機能しない (または誤って解析されている) のはなぜですか?

:controller => 'phones', :action => 'edit' の私の rspec ルートは機能しているようです...それは 'phones/123/edit' である必要があり、rspec テストと rake ルートによると IS です。しかし、redirect_to 期待を作成すると、期待は失敗します。

URLのルートテストは次のとおりです。

失敗する期待は次のとおりです。

そして、これは私がテストで受け取るメッセージです:

スキズニットは何ですか?

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

ruby-on-rails - actioncontrollerが.htmlですべてのURL/パスを自動フォーマットするためのRails default_url_options

私たちの要件の 1 つは、すべての URL が .html で終わることでした。default_url_options メソッドをオーバーライドして、オプションにフォーマットを追加しました。

これはほとんどの場合うまく機能します...しかし、次のルートで問題が発生します:

これらのルートが返されます。

これらのルートに例外を設ける方法を見つける必要があります。これは可能ですか、またはこれを行うためのよりスマートな方法を知っている人はいますか?

0 投票する
5 に答える
7854 参照

ruby-on-rails - 1 つのコントローラー、通常のユーザーと管理者用の異なるビュー

私のアプリケーションには、「ユーザー」モデルがあります。各ユーザーは、モデル「アドレス」で定義されている複数の (電子メール) アドレスを持つことができます。

AddressController クラス内では、現在ログインしているユーザーが "@user" インスタンス変数で利用できます。コントローラーは、通常のユーザーが自分に属していないアドレスを編集、削除、表示などできないようにしますが、管理ユーザーがそれらを編集することは許可します。AddressController クラスは、現在ログインしているユーザーが通常の操作を実行しているか、スーパーユーザーの操作を実行しているかを AddressModel に問い合わせることができます。

これはすべてうまく機能し、データベースの更新は期待どおりに行われますが、操作モードに応じて異なる HTML ビューが必要です。それを達成するための2つの方法しか考えられません。

  1. (@privileged などのインスタンス変数を使用して) AddressController クラスで認識される操作モード (通常/特権) を作成し、ビューで「if」ステートメントを使用します。
  2. アドレス コントローラーで「after_filter」などを使用して、別のレイアウトをレンダリングします。

単一のコントローラーを実行した結果を、その操作モードに応じて 2 つのまったく異なるレイアウトで表示できる場合、それを実現するための良い方法は何ですか?

前もってありがとうステファン

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

ruby-on-rails - Railsのコントローラーによってどのメソッドが「ヘルパー」メソッドとして宣言されているかをプログラムで判断するにはどうすればよいですか?

メソッドをコントローラーに追加し、それをヘルパー メソッドとして宣言するプラグインを作成しています。(プラグインではなく)静的に実行した場合、次のようになります。

それはうまく動作します。ただし、実際に:some_helper_methodはヘルパーメソッドであることをテストしたいと思います。私はこれを試しました:

残念ながら、クラスメソッドActionController::Baseはありません。:helper_methodsクラスが公開するもののリストをどこで取得できるか知っている人はい:helper_methodますか?

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

ruby-on-rails - 複数のページで同じフォームを使用するための Rails のベスト プラクティス

Rails 2.3.1 Web サイトを開発しています。Web サイト全体で、さまざまなページ (ホームページ、投稿の作成ページ、投稿一覧ページ、コメント一覧ページなど) に投稿を作成するためのフォームが必要です。さまざまなコントローラー)。これらの各ページには、対応するコントローラー/アクションで取得されるさまざまなその他の情報が表示されます。例: ホームページには、最新の 10 件の投稿、DB から取得されたコンテンツなどが一覧表示されます。

そこで、投稿作成フォームを独自の部分に移動し、必要なすべてのページにこの部分を含めました。Partial POST のフォームが /questions に送信されることに注意してください (これは PostsController::create にルーティングされます。これはデフォルトの Rails の動作です)。

私が直面している問題は、フォームがホームページ (/home/index. html.erb)。

@post.save? == false, I render action => "../submitting_controller/submitting_action" (少しハックですが、PostsController 以外からアクションをレンダリングできます)。

これは表面上はうまくいくように見えました。不完全なフォームは、すべて正しい @post.errors メッセージなどで送信されたビューでレンダリングされました。問題は、実際の submit_controller/submitting_action メソッドが呼び出されなかったため、ページ上の他のすべてのデータが表示されなかったことです。関連付けられたビュー。(すべてのエラー メッセージと送信された値を持つ @post インスタンス オブジェクトを保持しない redirect_to ではなく、インスタンス オブジェクトを保持する render を実行したことを思い出してください。)

私が見る限り、2つのオプションがあります:

1) @post.save 時に @post オブジェクトをセッションに保存できますか? PostsController::create、redirect_to submit_controller/submitting_action で失敗し、その時点で @post オブジェクトをセッションから取り出し、それを使用してフォーム/エラー メッセージを再設定します。(私が理解している限り、セッションにオブジェクトを保存することは、レールでは悪い習慣です)

2) さまざまな submit_controller/submitting_action から非投稿作成フォーム データをプルするために使用されるすべてのロジックを移動し、それを ApplicationController に配置し、PostsController::create で submit_controller/submitting_action の巨大な switch ステートメントを作成し、メソッドをApplicationController を使用して、各送信ページのレンダリングに必要なすべての追加データを取得します。

Rails内でこれを行う最善の方法について考えていますか?

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

ruby-on-rails - Railsコントローラーのテスト-検証エラーはHTTPエラー応答を発生させません

不正なデータを使用してテスト対象のコントローラーに「post」リクエストを送信するActionController派生テストがあります。コントローラは、新しいオブジェクトを作成して保存しようとします。モデルには、保存時にトリガーされる検証メソッドがあり、テストによって送信された誤ったデータを検出する検証エラーを生成します。

ここまでは順調ですね。ここで、コントローラーはassert_response:failureを使用して、HTTP応答ステータスが失敗であることを確認します。ただし、テストはこのステップで失敗し、次のようになります。

予想される応答は<:failure>でしたが、<200>でした

@ obj.errorsには検証エラーが正しく入力されていますが、どういうわけかHTTP応答は常に200です。

手がかりはありますか?