2016-11-30 9 views
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> &nbsp; Nazad 
     <% end %> 

     <%= button_tag(type: "submit", class: "btn btn-default") do %> 
      <i class="fa fa-check"></i> &nbsp; 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> &nbsp; Nazad 
     <% end %> 

     <%= button_tag(type: "submit", class: "btn btn-default") do %> 
      <i class="fa fa-check"></i> &nbsp; Pošalji 
     <% end %> 

    <% end %> 

<% end %> 

私はこのエラーを取得するフォーム送信しようとすると:

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です:

No route matches {:action=>"show", :controller=>"cities", :id=>nil} missing required keys: [:id]

をこれは私のcity_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> &nbsp; Nazad--> 
      <% end %> 

      <% if is_admin? %> 
       <%= link_to edit_school_path(@school), class: "btn btn-default" do %> 
        <i class="fa fa-pencil"></i> &nbsp; Uredi školu 
       <% end %> 

       <%= link_to new_school_sclass_path(@school), class: "btn btn-default" do %> 
        <i class="fa fa-plus"></i> &nbsp; Dodaj razred 
       <% end %> 

       <%= link_to new_school_generation_picture_path(@school), class: "btn btn-default" do %> 
        <i class="fa fa-plus"></i> &nbsp; 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) 

また、フォームは奇妙なURL(http://localhost:3000/skola/1.17)を形成:id:formatパラメータを提出しています。

答えて

0

解決済み!私はschools#createにエラーが発生しました:

redirect_to school_path(@school)

redirect_to school_path(@city, @school)

それはしなければなりませんでした

関連する問題