Я проверил все темы, которые уже, похоже, задали один и тот же вопрос, но не получили ответа. Я получаю следующую ошибку, когда пытаюсь создать нового гонщика, используя new_racer_path.ActionController :: UrlGenerationError in Racers # new
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 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
Мои контроллеры:
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 %>
Я понимаю, когда новый пользователь щелкнул, новое действие в мой контроллер выполнен, создается новый гонщик и присвоения ему @racer, а затем new.html.erb визуализируется в свою очередь, создает _form. Я новичок в рельсах, и это будет здорово, если вы поможете мне отладить это.
Интересно. Вы пытались передать «локальные» переменные в «_form» частично? '<% = render" form ", locals: {racer: @racer}%>' '<% = form_for racer ...' –
Не могли бы вы разместить свой файл new.html.erb? Это тот, который отображается для нового действия (а не из edit.html.erb, который вы опубликовали). – rlarcombe
где вы определили racer_params? Я не вижу их на контроллере.Просто спрашивайте, потому что кажется, что есть конец контроллера класса без частного раздела. – 0r4cl3