В моей заявке есть два класса, которые имеют отношение «has_many». И из этого проекта я могу получить объект с моего контроллера (* _ controler.rb) и успешно передать свой вид (* .html.erb)Невозможно получить доступ к значению объекта коллекции в файле erb - has_many relationship - ruby on rails
Но на части обзора (*. Html.erb) я могу класс коллекции не является объектом доступа ...
я получил следующее исключение:
ActionView::TemplateError (You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.inject) on line #31 of app/views/student/_populate.html.erb:
Классы модели:
class Student < ActiveRecord::Base
has_many :Subject, :class_name=>"Subject"
attr_accessible :first_name, :middle_name, :last_name,
self.table_name="students"
set_primary_key :id
blahblah
end
class Subject < ActiveRecord::Base
belongs_to :Student, :foreign_key=>'student_id'
attr_accessible :student_id, :name
self.table_name="subjects"
blahblah
end
контроллер:
class StudentController < ApplicationController
require "student.rb"
def populate
@pos=0
filter_query = ''
if !params[:firstName].blank?
filter_query +=" first_name='" + params[:firstName].to_s + "' and"
end
if filter_query !=''
filter_query= filter_query[0..filter_query.length-4]
@stuData= Student.find(:all, :conditions=>filter_query)
end
end
Вид:
populate.html.erb
<div class="header">
<div class="heading" style="float:left;width:900px;">
<% form_tag(:controller=>"student", :action=>"populate") do %>
<table>
<tr>
<td width="10"> <label> First Name:</label> </td>
<td width="40"> <%= text_field_tag('firstName') %> </td>
</tr>
</table>
<input name="submitFormName" class="form_submit" type="submit" value="Search" />
<% end %>
<div height="10"> </div>
</div>
</div>
<div class="students" style="float:left;width:1330px;">
<% if [email protected]? %>
size = <%= @stuData.size %>
<% if [email protected]? %>
<%= render :partial=>'populate' , :locals=>{:stuData => @stuData} %>
<% end %>
<% else %>
<div>Not found...</div>
<% end %>
</div>
_populate.html.erb
<div style="overflow-y:auto;overflow-x:scroll;">
<table >
<thead>
<th>Id</th>
<th>First Name</th>
<th>Middle Name </th>
<th>Last Name</th>
<th>Subject Name</th>
</thead>
<% stuData.each do |item| %>
<tr>
<td id="studentId"> <%= item.id %> </td>
<td id="firstNameId"> <%= item.promotion_code %> </td>
<td id="middleNameId"> </td>
<td id="lastNameId"> </td>
<td id="cityId">
<% @var1 = item.Subject %>
<% if @var1.nil? %>
<% @var1.each do |pc| %>
<%= pc.name %>
<% end %>
<% end %>
</td>
</tr>
<% end %>
</table>
</div>
Я пересекла чек на консоли:
@student = Student.find(144)
=> #<Student id: 4, first_name: "ABC", middle_name: "DEF", last_name: "GHI">
>>
?> @isNullCheck = @student.Subject.nil?
=> false
>>
?> @subList = @student.Subject
=> [#<Subject id: 5, student_id: 4, name: "Maths">, #<Subject id: 6, student_id: 4, name: "English"> ]
>>
?> @StuSub1 = @student.Subject[0]
=> #<Subject id: 5, student_id: 4, name: "Maths">
>>
?> @StuSub2 = @student.Subject[1]
=> #<Subject id: 6, student_id: 4, name: "English">
==
?> @StuSub3 = @student.Subject[2]
=> nil
>>
>> @StuSubValue1 = @student.Subject[0].value
=> Maths
>>
>> @StuSubValue2 = @student.Subject[0].value
=> English
>>
Проблема: Когда я буду искать какие-либо детали ученика со страницы (populate.html.erb), мой контроллер будет извлекать данные и передавать объект (@stuData) в шаблон (_populate.html.erb).
Шаблон (_populate.html.erb) может печатать данные студента. Но не может печатать имя субъекта студента. (Как студент имеет много предметов)
Я гугл много вещей ....
я думаю, что нет ничего плохого в дизайне и контроллер модели части .... , но я думаю, что проблема может быть с
- отображения страниц или
- локальные параметры, проходящие в шаблон или
- параметр коллекции перехода к шаблону ...
но я не уверен ....
Может ли кто-нибудь помочь мне в этом ???
Спасибо заранее,
чувак ........ . ты замечательный. он исправляет мою проблему ...... –
Я понятия не имею, что рубиновый материал настолько строг в отношении сингулярного множественного числа и чувствительности к регистру ... –