【发布时间】:2018-04-05 00:59:05
【问题描述】:
当我尝试在 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
【问题讨论】:
-
能否分享
rails routes的输出? -
由于某种原因我无法编辑该条目。这里是轮播gist.github.com/drale2k/a25c4cbffe8c5e6446df2141a393cd17
-
我没有在 form_with 中使用过多个模型,尽管我在 PR 中看到
form_with(model: [ @post, Comment.new ])相同。此外,彼得有一个答案。您能否尝试让我们知道是否还有其他问题。该错误主要是因为没有名为operation_agent_meterpreter_jobs_path的路由显然是由form_with创建的
标签: ruby-on-rails routing