gpt4 book ai didi

ruby-on-rails - ActionController::Racers 中的 UrlGenerationError#new

转载 作者:太空宇宙 更新时间:2023-11-03 16:44:59 24 4
gpt4 key购买 nike

我检查了所有似乎已经问过相同问题但没有得到答案的主题。当我尝试使用 new_racer_path 创建一个新赛车手时,出现以下错误。

ActionController::UrlGenerationError in Racers#new
Showing /home/dsmegha/RoR-Coursera/Mongo/raceday/app/views/racers/_form.html.erb where line #1 raised:

No route matches {:action=>"show", :controller=>"racers", :id=>""} missing required keys: [:id]
Extracted source (around line #1):
1 <%= form_for(@racer) do |f| %>
2 <% if @racer.errors.any? %>
3 <div id="error_explanation">
4 <h2><%= pluralize(@racer.errors.count, "error") %> prohibited this racer from being saved:</h2>
5
6 <ul>

我的 rake 路由输出:

$ rake routes
Prefix Verb URI Pattern Controller#Action
racers GET /racers(.:format) racers#index
POST /racers(.:format) racers#create
new_racer GET /racers/new(.:format) racers#new
edit_racer GET /racers/:id/edit(.:format) racers#edit
racer GET /racers/:id(.:format) racers#show
PATCH /racers/:id(.:format) racers#update
PUT /racers/:id(.:format) racers#update
DELETE /racers/:id(.:format) racers#destroy
root GET / racers#index

我的 Controller :

  def show
end
def new
@racer = Racer.new
end

def create
@racer = Racer.new(racer_params)

respond_to do |format|
if @racer.save
format.html { redirect_to @racer, notice: 'Racer was successfully created.' }
format.json { render :show, status: :created, location: @racer }
else
format.html { render :new }
format.json { render json: @racer.errors, status: :unprocessable_entity }
end
end
end

def racer_params
params.require(:racer).permit(:number, :first_name, :last_name, :gender, :group, :secs)
end

我的 new.html.erb :

<h1>New Racer</h1>

<%= render 'form' %>

<%= link_to 'Back', racers_path %>

引发错误的 _form.html.erb 的起始部分。

<%= form_for(@racer) do |f| %>
<% if @racer.errors.any? %>

index.html.erb 的一部分,可以从中创建新的赛车手。

<%= link_to 'New Racer', new_racer_path %>

我的理解是当新用户被点击时,我的 Controller 中的新 Action 被执行,创建了一个新的 Racer 并将其分配给@racer,然后 new.html.erb 被渲染,这反过来渲染了 _form。我是一个 Rails 新手,如果你能帮我调试这个就太好了。

最佳答案

我认为您的 Racer 模型可能设置有误。

应该这样定义:

# app/models/racer.rb
class Racer < ActiveRecord::Base
end

如果您的 Racer 类没有继承自 ActiveRecord::Base,它不会响应 new_record? 方法,因此 form_for 将无法正确选择路由。

关于ruby-on-rails - ActionController::Racers 中的 UrlGenerationError#new,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35085898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com