0
我有创建城市中的新学校的形式,它不适用于创建;它会返回一个错误,其中包含city_path
的未定义参数:id
。提交表格后缺少必需的密钥
<% if controller.action_name == "edit" %>
<% if @school.errors.any? %>
<div class="errors alert alert-danger">
<ul>
<% @school.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= form_for @school, url: school_path(@school) do |f| %>
<%= f.label "Ime:" %>
<%= f.text_field :name, class: "form-control input-field" %>
<%= f.label "URL slike:" %>
<%= f.text_field :icon_url, class: "form-control input-field" %>
<%= link_to school_path(@school), class: "btn btn-default", "data-no-turbolink": true do %>
<i class="fa fa-chevron-left"></i> Nazad
<% end %>
<%= button_tag(type: "submit", class: "btn btn-default") do %>
<i class="fa fa-check"></i> Pošalji
<% end %>
<% end %>
<% else %>
<% if @school.errors.any? %>
<div class="errors">
<ul>
<% @school.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= form_for @school, url: city_schools_path do |f| %>
<%= f.label "Ime:" %>
<%= f.text_field :name, class: "form-control input-field" %>
<%= f.label "URL slike:" %>
<%= f.text_field :icon_url, class: "form-control input-field" %>
<%= link_to city_path(@city), class: "btn btn-default", "data-no-turbolink": true do %>
<i class="fa fa-chevron-left"></i> Nazad
<% end %>
<%= button_tag(type: "submit", class: "btn btn-default") do %>
<i class="fa fa-check"></i> Pošalji
<% end %>
<% end %>
<% end %>
当我尝试发送的形式我得到这个错误:
No route matches {:action=>"show", :controller=>"cities", :id=>nil} missing required keys: [:id]
这是我city_controller
:
class CitiesController < ApplicationController
def index
@cities = City.all
end
def show
find_city
@schools = @city.schools.all
end
def new
@city = City.new
end
def edit
find_city
end
def update
find_city
if @city.update(city_params)
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 find_schools
@schools = @city.schools.all
end
def city_params
params.require(:city).permit(:name, :icon_url)
end
end
这是school_controller
:
class SchoolsController < ApplicationController
def index
find_city
@schools = @city.schools.all
end
def new
find_city
@school = @city.schools.new
end
def create
find_city
@school = @city.schools.new(school_params)
if @school.save
redirect_to school_path(@city, @school)
else
render "new"
end
end
def show
find_school
@search = @school.users.ransack(params[:q])
@city = @school.city
if (params.has_key?(:q))
@users = @search.result
else
# Prikazivanje svih korisnika koji su iste generacije kao i
# poslednji dodati korisnik
#@users = @school.users.where(generation: User.last.generation).order("sclass ASC")
#@sclasses = @school.sclasses.where(generation: Sclass.last.generation).order("name ASC")
if Sclass.last.nil?
@sclasses = @school.sclasses.all
else
@sclasses = @school.sclasses.where(generation: Sclass.last.generation).order("name ASC")
end
end
end
def edit
find_school
end
def update
find_school
if @school.update(school_params)
redirect_to school_path(@school)
else
render "edit"
end
end
def destroy
find_city
find_school
@school.destroy
redirect_to city_path(@city)
end
private
def find_city
@city = City.find(params[:city_id])
end
def find_school
@school = School.find(params[:id])
end
def school_params
params.require(:school).permit(:name, :icon_url)
end
end
这里是学校放映视图:
<% title "#{@school.name}" %>
<div class="row">
<div class="col-md-12 text-center city-title">
<h3><%= @school.name %></h3>
</div>
</div>
<%= search_form_for @search, url: school_path(@school) do |f| %>
<div class="row input-field">
<div class="text-center">
<%= f.text_field :full_name_cont, placeholder: "Pretraga učenika" %>
</div>
</div>
<div class="row input-field">
<div class="text-center">
<%= f.select :generation_eq, options_from_collection_for_select(@school.users.order("generation DESC").select(:generation).uniq, "generation", "generation", @search.generation_eq), {}, { :class => "selectpicker" } %>
</div>
</div>
<div class="row input-field">
<div class="text-center">
<%= f.submit "Traži", class: "btn btn-default" %>
</div>
</div>
<% end %>
<div class="container">
<div class="row">
<div class="col-md-12">
<%= link_to city_path(@school.city), class: "btn btn-default" do %>
<i class="fa fa-chevron-left"></i> Nazad-->
<% end %>
<% if is_admin? %>
<%= link_to edit_school_path(@school), class: "btn btn-default" do %>
<i class="fa fa-pencil"></i> Uredi školu
<% end %>
<%= link_to new_school_sclass_path(@school), class: "btn btn-default" do %>
<i class="fa fa-plus"></i> Dodaj razred
<% end %>
<%= link_to new_school_generation_picture_path(@school), class: "btn btn-default" do %>
<i class="fa fa-plus"></i> Dodaj tablo
<% end %>
<% end %>
</div>
</div>
</div>
<div class="container">
<div class="users">
<% if [email protected]? %>
<% @users.in_groups_of(4, false).each do |users| %>
<div class="row">
<% users.each do |user| %>
<div class="col-xs-6 col-md-3 text-center">
<a href="<%= user_path(@city, @school, user.sclass, user) %>" class="thumbnail school" data-no-turbolink="true">
<%= image_tag user.avatar.url(:thumb), size: "100", class: "user-profile-image img-responsive" %>
<%= user.full_name %> <br/>
<span class="badge">
<%= show_user_class(user.sclass.name) %>
</span>
</a>
</div>
<% end %>
</div>
<% end %>
<% else %>
<% @sclasses.in_groups_of(4, false).each do |sclasses| %>
<div class="row">
<% sclasses.each do |sclass| %>
<div class="col-xs-6 col-md-3 text-center">
<a href="<%= sclass_path(sclass) %>" class="thumbnail school" data-no-turbolink="true">
<%= image_tag sclass.icon_url, class: "img-responsive" %>
<%= show_user_class(sclass.name) %>
</a>
</div>
<% end %>
</div>
<% end %>
<% end %>
</div>
</div>
路线:
Prefix Verb URI Pattern
Controller#Action
root GET /
welcome#index
index GET /pocetna(.:format)
welcome#index
new_cart GET /korpa(.:format)
carts#new
success GET /poslato(.:format)
carts#success
sessions POST /sessions(.:format)
sessions#create
new_session GET /sessions/new(.:format)
sessions#new
session DELETE /sessions/:id(.:format)
sessions#destroy
login GET /prijava(.:format)
sessions#new
prijava POST /prijava(.:format)
sessions#create
logout GET /odjava(.:format)
sessions#destroy
odjava DELETE /odjava(.:format)
sessions#destroy
school_sclasses GET /skola/:school_id/razred(.:format)
sclasses#index
POST /skola/:school_id/razred(.:format)
sclasses#create
new_school_sclass GET
/skola/:school_id/razred/dodaj(.:format) sclasses#new
edit_sclass GET /razred/:id/uredi(.:format)
sclasses#edit
sclass GET /razred/:id(.:format)
sclasses#show
PATCH /razred/:id(.:format)
sclasses#update
PUT /razred/:id(.:format)
sclasses#update
school_users GET /skola/:school_id/ucenik(.:format)
users#index
POST /skola/:school_id/ucenik(.:format)
users#create
new_school_user GET
/skola/:school_id/ucenik/dodaj(.:format) users#new
edit_user GET /ucenik/:id/uredi(.:format)
users#edit
user GET /ucenik/:id(.:format)
users#show
PATCH /ucenik/:id(.:format)
users#update
PUT /ucenik/:id(.:format)
users#update
DELETE /ucenik/:id(.:format)
users#destroy
school_generation_pictures POST /skola/:school_id/tablo(.:format)
generation_pictures#create
new_school_generation_picture GET /skola/:school_id/tablo/novi(.:format)
generation_pictures#new
edit_generation_picture GET /tablo/:id/uredi(.:format)
generation_pictures#edit
generation_picture GET /tablo/:id(.:format)
generation_pictures#show
PATCH /tablo/:id(.:format)
generation_pictures#update
PUT /tablo/:id(.:format)
generation_pictures#update
city_schools POST /gradovi/:city_id/skola(.:format)
schools#create
new_city_school GET
/gradovi/:city_id/skola/nova-skola(.:format) schools#new
edit_school GET /skola/:id/uredi(.:format)
schools#edit
school GET /skola/:id(.:format)
schools#show
PATCH /skola/:id(.:format)
schools#update
PUT /skola/:id(.:format)
schools#update
cities POST /gradovi(.:format)
cities#create
new_city GET /gradovi/novi(.:format)
cities#new
edit_city GET /gradovi/:id/uredi(.:format)
cities#edit
city GET /gradovi/:id(.:format)
cities#show
PATCH /gradovi/:id(.:format)
cities#update
PUT /gradovi/:id(.:format)
cities#update
carts GET /carts(.:format)
carts#index
POST /carts(.:format)
carts#create
edit_cart GET /carts/:id/edit(.:format)
carts#edit
cart GET /carts/:id(.:format)
carts#show
PATCH /carts/:id(.:format)
carts#update
PUT /carts/:id(.:format)
carts#update
DELETE /carts/:id(.:format)
而且,形式提交:id
和:format
参数形成怪异的URL(http://localhost:3000/skola/1.17)。