Railsのネストされたコントローラーのパスが間違っています

Drazen Mokic

URL http:// localhost:3000 / Operations / OPERATION_ID / agents / AGENT_ID / jobs / Meterpreter / newで新しいジョブを作成しようとすると

undefined method `operation_agent_meterpreters_path' for #<#<Class:0x007ff2f7822638>:0x007ff2f9a7e0d8>
Did you mean?  operation_agent_jobs_meterpreter_path

私は次のルートを持っています

Rails.application.routes.draw do


  get 'agents/index'

  get 'agents/show'

  devise_for :users

  resources :operations do
    resources :agents do
      namespace :jobs do
        resources :meterpreter
      end
    end
  end

  root 'operations#index'
end

ジョブ内のコントローラー/

class Jobs::MeterpreterController < ApplicationController

  def new
    @operation = Operation.find params[:operation_id]
    @agent = Agent.find params[:agent_id]
    @job = MeterpreterJob.new agent: @agent
  end

  private

  def jobs_params
    params.require(:job).permit(:ip, :port)
  end
end

モデル

class Jobs::Meterpreter < Job
    jsonb_accessor :options,
        ip: :string,
        port: :integer

    #== VALIDATIONS
    validates :ip, :port, presence: true
end

そして、jobs / Meterpreter /new.html.erbのフォームのビュー

<div class="card">
    <h4 class="card-header">New Meterpreter Job</h4>
  <div class="card-body">
  <%= form_with model: [@operation, @agent, @job] do |form| %>
      <div class="form-row">
        <div class="col-8">
            <label for="name" class="col-form-label">Name:</label>
          <%= form.text_field :ip, class: "form-control", placeholder: "0.0.0.0", required: true %>
        </div>
        <div class="col-4">
            <label for="name" class="col-form-label">Name:</label>
          <%= form.text_field :port, class: "form-control", placeholder: "443", required: true %>
        </div>
      </div>
      <%= form.submit "Create", class: "btn btn-primary mt-4" %>
    <% end %>
  </div>
</div>

すべてのルートhttps://gist.github.com/drale2k/a25c4cbffe8c5e6446df2141a393cd17

セブンシーキャット

現在のところ、このコードにはいくつか問題があります。

  • ルートでは、resourcesとの間に複数の不一致があり:meterpreterます。システムに複数のMeterpreterジョブがある場合は、両方とも複数形である必要があります。resources :meterpreters

  • コントローラは、Railsの規則に従って、常に複数の名前を付ける必要があります。Jobs::MeterpretersControllerコントローラファイルとビューフォルダの名前も変更する必要があります。

  • Jobs::Meterpreterとの間に名前の不一致がありMeterpreterJobます。私はそこで何が起こっているのか分かりません、私は彼らが同じであるはずだと思います。

しかし、主な問題については:

  • ルーティング名前空間を定義しました:jobs。つまり/jobs/、URLの一部である必要がありますが、その名前空間をform_withタグに含めていません名前空間を含める必要があります。<%= form_with model: [@operation, @agent, :jobs, @job] do |form| %>

また、のようなURLが本当に必要かどうかを自問します/operations/123/agents/345/jobs/meterpreters/567これは非常に長いURLであり、簡潔にするために削除する必要のある不要な情報が含まれている可能性があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Rails:ネストされた属性パラメータ内の配列列の引数の数が間違っています(0の場合、1..2が必要です)

分類Dev

スパーク豆エンコーダは、ネストされたクラスの間違った値をマッピングしています

分類Dev

RSpecテストコントローラーにArgumentErrorがあります:引数の数が間違っています(2、期待される0)Rails 4.2.8

分類Dev

@Url.RouteUrl は、コントローラー アクションの誤解を招く/間違ったパスを返します (「routeName」パラメーターが明示的に指定されていない限り)

分類Dev

FragmentStatePagerAdapterコンストラクターの定数が間違っています

分類Dev

Entity FrameworkDbContextが間違ったコンストラクターで初期化されています

分類Dev

RailsがPolymorphic_urlとSTIを使用してネストされたリソースに間違ったパスを生成しています

分類Dev

Railsのコントローラーのネストされた名前空間

分類Dev

生成されたRSpecコントローラーテストが間違った数の引数で失敗しています(2が与えられ、1が期待されます)

分類Dev

ColdFusionコンポーネントが間違ったパスから開始されます

分類Dev

渡されたアイテムの数が間違っています-パンダとトランスフォーム

分類Dev

ifステートメントの間違った部分が実行されています

分類Dev

コンストラクターの移動とテンプレート化、間違ったコンストラクターが使用されます

分類Dev

ネストされたインクルードがパグのドロップブロックコンテンツの間違った場所にある

分類Dev

Laravel Livewire key()は、パラメーター1が配列であり、整数が指定されていることを想定しています。ネストされたコンポーネント| ループ内のコンポーネントのロード

分類Dev

パッケージリストファイルには、MySQLの間違ったバージョンがリストされています

分類Dev

コンパイラは到達不能ステートメントがあると言っていますが、何が間違っているのですか?

分類Dev

Laravelパスポートを使用してAPI認証を作成しました。認証トークンが間違っていると、「ルート[ログイン]が定義されていません」というエラーが送信されます。

分類Dev

スクロールされたiframe内のjQueryUIドロップゾーンのオフセットが間違っています

分類Dev

Railsのネストされたモデルの更新では、子コントローラーは使用されません。何と呼ばれていますか?

分類Dev

反応コンポーネントの間違ったパスプロップ

分類Dev

アップグレード後の間違ったカーネル---古いカーネルはまだインストールされていますか?

分類Dev

アップグレード後の間違ったカーネル---古いカーネルはまだインストールされていますか?

分類Dev

ネストされたコンポーネントの間違った小道具関数onClickに反応する

分類Dev

PrimeNGコンポーネントのインポートパスが間違っている

分類Dev

ネストされた属性のパラメーターを呼び出すrailsコントローラー

分類Dev

シェイプへのフォーカスのリクエストが間違ったコントロールになっています

分類Dev

コントローラー仕様の引数の数が間違っています(2が与えられ、0が期待されます)

分類Dev

ストーリーボードで作成されたUIImageViewのフレーム値が間違っています

Related 関連記事

  1. 1

    Rails:ネストされた属性パラメータ内の配列列の引数の数が間違っています(0の場合、1..2が必要です)

  2. 2

    スパーク豆エンコーダは、ネストされたクラスの間違った値をマッピングしています

  3. 3

    RSpecテストコントローラーにArgumentErrorがあります:引数の数が間違っています(2、期待される0)Rails 4.2.8

  4. 4

    @Url.RouteUrl は、コントローラー アクションの誤解を招く/間違ったパスを返します (「routeName」パラメーターが明示的に指定されていない限り)

  5. 5

    FragmentStatePagerAdapterコンストラクターの定数が間違っています

  6. 6

    Entity FrameworkDbContextが間違ったコンストラクターで初期化されています

  7. 7

    RailsがPolymorphic_urlとSTIを使用してネストされたリソースに間違ったパスを生成しています

  8. 8

    Railsのコントローラーのネストされた名前空間

  9. 9

    生成されたRSpecコントローラーテストが間違った数の引数で失敗しています(2が与えられ、1が期待されます)

  10. 10

    ColdFusionコンポーネントが間違ったパスから開始されます

  11. 11

    渡されたアイテムの数が間違っています-パンダとトランスフォーム

  12. 12

    ifステートメントの間違った部分が実行されています

  13. 13

    コンストラクターの移動とテンプレート化、間違ったコンストラクターが使用されます

  14. 14

    ネストされたインクルードがパグのドロップブロックコンテンツの間違った場所にある

  15. 15

    Laravel Livewire key()は、パラメーター1が配列であり、整数が指定されていることを想定しています。ネストされたコンポーネント| ループ内のコンポーネントのロード

  16. 16

    パッケージリストファイルには、MySQLの間違ったバージョンがリストされています

  17. 17

    コンパイラは到達不能ステートメントがあると言っていますが、何が間違っているのですか?

  18. 18

    Laravelパスポートを使用してAPI認証を作成しました。認証トークンが間違っていると、「ルート[ログイン]が定義されていません」というエラーが送信されます。

  19. 19

    スクロールされたiframe内のjQueryUIドロップゾーンのオフセットが間違っています

  20. 20

    Railsのネストされたモデルの更新では、子コントローラーは使用されません。何と呼ばれていますか?

  21. 21

    反応コンポーネントの間違ったパスプロップ

  22. 22

    アップグレード後の間違ったカーネル---古いカーネルはまだインストールされていますか?

  23. 23

    アップグレード後の間違ったカーネル---古いカーネルはまだインストールされていますか?

  24. 24

    ネストされたコンポーネントの間違った小道具関数onClickに反応する

  25. 25

    PrimeNGコンポーネントのインポートパスが間違っている

  26. 26

    ネストされた属性のパラメーターを呼び出すrailsコントローラー

  27. 27

    シェイプへのフォーカスのリクエストが間違ったコントロールになっています

  28. 28

    コントローラー仕様の引数の数が間違っています(2が与えられ、0が期待されます)

  29. 29

    ストーリーボードで作成されたUIImageViewのフレーム値が間違っています

ホットタグ

アーカイブ