Städte # neue Controller zeigt Fehler beteiligt cities_path, aber ich es nicht in irgendeiner Datei noch in CitiesController. Ich habe alle Dateien überprüft, versucht, den Server neu zu starten, aber immer noch nichts.NoMethodError für neue Controller in Rails
undefined method `cities_path' for #<#<Class:0x007f9e4c1cb348>:0x00000003836140>
Did you mean? city_path
CitiesController
class CitiesController < ApplicationController
def index
@cities = City.all
end
def show
find_city
end
def new
@city = City.new
end
def edit
find_city
end
def update
find_city
if @city.save
redirect_to city_path(@city)
else
render "edit"
end
end
def create
@city = City.new(city_params)
if @city.save
redirect_to index_path
else
render "new"
end
end
private
def find_city
@city = City.find(params[:id])
end
def city_params
params.require(:city).permit(:name, :icon_url)
end
end
Routes
get "/cities/new" => "cities#new", as: "new_city"
post "/index" => "cities#create"
get "/cities/:id" => "cities#show", as: "city"
get "/cities/:id/edit" => "cities#edit", as: "edit_city"
patch "/city/:id" => "cities#update"
Formular (Fehler wird auf der ersten Zeile angehoben)
<%= form_for @city do |f| %>
<% if @city.errors.any? %>
<div class="errors">
<ul>
<% city.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.label "Name:" %>
<%= f.text_field :name, class: "form-control" %>
<%= f.label "Icon:" %>
<%= f.text_field :icon_url, class: "form-control" %>
<%= f.submit "Pošalji" %>
<% end %>
Ich bin sehr unklar, warum Ihre Create Route nur '/ index' ist, während alles andere auf'/cities' beschränkt ist. Ihre Städte-Indexroute sollte wirklich "/ cities" sein, nicht "/ index". – meagar
Es ist Index, weil nach der Erstellung der Stadt Indexseite angezeigt wird. Alle Städte werden auf der Indexseite der Site angezeigt, sie haben keine separate Ansicht. – Nikola