У меня есть 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
Что такое 'school_id' поле в школьном столе или таблица' relationship' выглядят мне как таблица отношений на основе ваших отношений. – Viren