2013-07-23 2 views
0

Я пытался настроить виртуальный атрибут для EBM:Виртуального Атрибут, неверное число аргументов

<%= form_for Ebm.new do |f| %> 
<td> <%= f.text_field :ebm_findid %></td> 
...... 

И в моей ЭОЙ модели:

class Ebm < ActiveRecord::Base 
attr_accessible :content, :extra, :number, :text 

def ebm_findid(name) 
    self.ebm_id = Ebm.find_by_name(name) 
end 
end 

Но какой-то образом я получаю сообщение об ошибке:

ArgumentError in Categories#index 

Showing C:/Sites/ruble21.07abends/app/views/ebms/_favorite.html.erb where line #21 raised: 

wrong number of arguments (0 for 1) 
Extracted source (around line #21): 

18: <% end %> 
19: <tr> 
20: <%= form_for Ebm.new do |f| %> 
21:  <td> <%= f.text_field :ebm_findid %></td> 

Что мне нужно изменить?

+0

Не могли бы вы вставить полный backtrace? –

+2

Поскольку вы передаете параметр в методе, который вы не передали при вызове этого метода. –

+0

ok Я добавил к моей модели def ebm_findid end, и теперь он работает, но когда я пытаюсь его сохранить, я получаю сообщение об ошибке. Невозможно назначить защищенные атрибуты: ebm_findid? Должен ли я добавить ebmfindid в attr_accessor? –

ответ

1

Чтобы исправить ошибку NoMethodError in EbmsController#create undefined method 'find_by_name':

find_by_name ожидает Ebm иметь атрибут name. Удостоверьтесь, что у вас это есть.

+0

Ах да! Я забыл это! Но теперь возникает новая ошибка: NoMethodError в EbmsController # create undefined method 'ebm_id = 'для #

+1

Это означает, что у вас нет определенного атрибута атрибута ebm_id. Если у вас есть такой столбец в базе данных, просто добавьте 'attr_accessor: ebm_id' – roody

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