Ruby for Rails: недоопределенный метод 'name' для # - PullRequest
0 голосов
/ 18 марта 2010

Я хочу отобразить столбец «имя» после того, как был найден из таблицы mytest.

В mytest.rb я определил "attrib_accessor: name";

В индексе процедуры в каталоге /controller/mytest_controller.rb,

def index
###[Ignore some code]
@mytesttbl=@user.find_by_id 
### I am able to verify the tuples in @mytesttbl
end 

В /view/mytest/index.rhtml у меня есть код вроде

<div id="mytesttable"> <%= render(:partial =>"mytesttbl", :object => @mytesttbl)%> </div> 

В /view/mytest/_mytesttbl.html.erb. У меня есть код как

<tr>
 <td><%=mytestbl.name %></td>
<tr>

когда я запустил приведенный выше код, у меня ошибка на _mytesttbl.html.erb,

undefined method 'name ' for #<Array:0xb6c971cc>

Пожалуйста, помогите. Спасибо,

Ответы [ 3 ]

2 голосов
/ 18 марта 2010

Я предполагаю, что это не ваш настоящий код, поскольку он не будет работать на самом деле. Ваш find возвращает массив. Вы либо хотите перебрать массив, либо, если знаете, что он содержит только один объект (как в случае, когда вы фактически находите по уникальному идентификатору), вы можете просто сделать mytesttbl.first, чтобы вытащить объект из него.

1 голос
/ 18 марта 2010

mytesttbl является array. Изменить view/mytest/index.rhtml на

<% @mytesttbl.each do |obj| %>
  <div id="mytesttable">
   <%= render(:partial =>"mytesttbl", :object => obj)%>
  </div>
<% end %>

Редактировать: Кроме того, view/mytest/_mytesttbl.html.erb должно выглядеть как

<tr>
 <td><%= object.name %></td>
<tr>
0 голосов
/ 20 марта 2010

вы не пропустили аргумент для @ user.find_by_id? обычно, когда я хочу получить имя, которое я делаю:

контроллер @ user = User.find (params [: id]), чтобы найти пользователя по определенному идентификатору.

вид

если вы хотите найти всех пользователей, тогда

контроллер @user = User.find (: все)

вид

User.find_by_id является избыточным, поскольку User.find по умолчанию находит по идентификатору.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...