Неопределенный метод «магазин», когда ясно, что это? - PullRequest
0 голосов
/ 04 января 2012

Я не понимаю, почему он это делает.У меня есть метод, определенный в моей BusinessStore модели, и я возвращаюсь к нему:

business_store.rb

class BusinessStore < ActiveRecord::Base
  attr_accessible :website, :business_name, :address, :phone_number, :online_store
  belongs_to :business
  has_many :user_prices
  attr_accessor :business_name
  validates_presence_of :address, :unless => :website?
  validates_presence_of :business_name
  validates_inclusion_of :online_store, :in => [true, false]

  def store
    if self.online_store
      "#{business_name} - #{website}"
    else
      "#{business_name} - #{address}"
    end
  end

  def business_name
    business.name if business
  end

  def business_name=(name)
    self.business = Business.find_or_create_by_name(name) unless name.blank?
  end
end

user_data / index.html.erb

<% for user_price in @bought_today %>
   <%= number_to_currency(user_price.price) %>
   <%= truncate(user_price.product_name, :length => 62) %></td>
   <%= truncate(user_price.business_store.store, :length => 85) %></td> # here
   <%= user_price.purchase_date.strftime("%b %d, %Y") %></td>
<% end %>

Затем я перехожу на страницу и получаю:

ActionView::Template::Error (undefined method `store' for nil:NilClass):

Почему это не работает?

Ответы [ 2 ]

4 голосов
/ 04 января 2012

Проблема не в том, что #store не определена в BusinessStore, а в том, что ваш вызов user_price.business_store возвращает nil, то есть между текущей user_price и BusinessStore нет никакой связи.

Если вы уверены, что каждый user_price должен принадлежать business_store, вам может потребоваться проверить код вашей модели для (как я предполагаю, называется) UserPrice и убедиться, что ваша ассоциация настроена там , Кроме того, вам может потребоваться убедиться, что вы связываете новые UserPrice объекты с BusinessStore. Обычно это делается с помощью .build метода :

# In, for instance, UserPricesController#New
@user_price = @business_store.user_prices.build

Это создает новую модель UserPrice, автоматически связанную с объектом @business_store.

0 голосов
/ 04 января 2012

Похоже, ваши ассоциации установлены неправильно.
Прочтите ответ @ Alex и сообщите, если ошибка все еще есть.

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