2013-08-20 2 views
0

У меня есть has_many ассоциацию в моем проекте, в основном у меня есть school модель, class модель и модель relationshipsрубин на рельсах не удалось найти школу без ID

Типовом школы

class School < ActiveRecord::Base` 

    has_many :relationships 
    has_many :class_rooms,through: :relationships 
    validates :school_id,:presence=>true 

end 

модель class_room

class ClassRoom < ActiveRecord::Base 
    validates :class_id,:class_name,:roll_no,:unique_code,presence:true 
    has_many :relationships 
    has_many :schools,through: :relationships 
end 

отношения модель

class Relationship < ActiveRecord::Base 
    belongs_to :school 
    belongs_to :class_room 
end 

контроллеры
class SchoolsController < ApplicationController 

    def new 
    @school=School.new 
    @schools=School.find(:all) 
    end 

    def create 
    @school=School.new(params[:school]) 
    if @school.save 
     flash[:sucess]="School saved successfully" 
     redirect_to root_url 
    else 
     render new 
    end 
    end 

    def destroy 
    School.find(params[:id]).destroy 
    flash[:success]="Deleted successfully" 
    redirect_to root_url 
    end 

end 


class ClassRoomsController < ApplicationController 
    def new 
    @classrooms=ClassRoom.find(:all) 
    @school=School.find(params[:school_id]) 
    @[email protected]_rooms.build 
    end 

    def create 
    @school=School.find(params[:school_id]) 
    @[email protected]_rooms.build(params[:class_room]) 
    if @classroom.save 
     flash[:sucess]="clasroom saved successfully" 
     redirect_to root_url 
    else 
     render new 
    end 
    end 

end 

мои маршруты файл

Attend::Application.routes.draw do 
    root :to => 'schools#new' 

    resources :schools do 
    resources :class_rooms 
    end 

    resources :schools 
    resources :class_rooms 
end 

мой новый вид для школы

<% provide(:title,'My schools') %> 
<div class="row"> 
<div class="span6 offset3"> 
<%=form_for(@school) do |f| %> 
<%render 'shared/error_messages' %> 
    <%=f.label :school_id %> 
    <%=f.text_field :school_id %> 
    <%=f.label :school_name %> 
    <%=f.text_field :school_name %> 
    <%=f.label :city %> 
    <%=f.text_field :city %> 
    <%=f.label :state %> 
    <%=f.text_field :state %> 
    <%=f.submit class:'btn btn-large btn-primary' %> 
    <%end%> 
    <%=link_to 'Myclass',new_class_room_path %> 
    </div> 
</div> 
<div class="row"> 
<div class="span6 offset3"> 
<table border="2"> 
    <tr> 
     <th>Name</th> 
     <th>code</th> 
     <th>city</th> 
     <th>state</th> 
     <th></th> 
    </tr> 
    <% @schools.each do |s| %> 
    <tr> 
    <td><%=link_to s.school_name,new_class_room_path(:school_id=>s.id) %></td> 
      <td><%=s.school_id %></td> 
      <td><%=s.city %></td> 
      <td><%=s.state %></td> 
    <td><%=link_to 'Delete',s,method: :delete,confirm:'Are you sure' %></td> 
    </tr> 
    <%end%> 
</table> 
</div> 
    </div> 

и, наконец, мое новое представление для class_rooms

<% provide(:title,'My schools') %> 
    <div class="row"> 
     <div class="span6 offset3"> 
    <%=form_for(@classroom) do |f| %> 
    <%render 'shared/error_messages' %> 
    <%=f.label :class_id %> 
    <%=f.text_field :class_id %> 
    <%=f.label :class_name %> 
    <%=f.text_field :class_name %> 
    <%=f.label :rolln_o %> 
    <%=f.text_field :roll_no %> 
    <%=f.label :unique_code %> 
    <%=f.text_field :unique_code %> 
    <%=f.submit class:'btn btn-large btn-primary' %> 
    <%end%> 
     </div> 
    </div> 

    <div class="row"> 
<div class="span6 offset3"> 
<table border="2"> 
    <tr> 
     <th>Name</th> 
     <th>code</th> 
     <th>rollno</th> 
     <th>uniquecode</th> 
    </tr> 
    <% @classrooms.each do |room| %> 
     <tr> 
      <td><%=link_to room.class_name%></td> 
      <td><%=room.class_id %></td> 
      <td><%=room.roll_no %></td> 
      <td><%=room.unique_code %></td> 
     </tr> 
    <%end%> 
</table> 
</div> 
    </div> 

теперь проблема заключается в том, что new class действие оказанными надлежащим образом, но когда я нажимаю на представить, это дает ошибку говоря Couldn't find School without an ID

+0

Что такое 'school_id' поле в школьном столе или таблица' relationship' выглядят мне как таблица отношений на основе ваших отношений. – Viren

ответ

0

Это не правильно, так как вы используете form_for(@school)

params[:school_id] 

заменить с

params[:school][:school_id] 
+0

Спасибо, что много ppl для совета ура, я как-то понял из решения, из книги agile web devlopement.Ново все спасибо за помощь ур. –

0

в форме школы, нет необходимости добавлять поля формы для school_id, потому что рельсы самого г enerate уникальный school_id, в то время как новый объект класса School создает. Попробуйте удалить это поле.

Смежные вопросы