2013-04-29 2 views
-1

Я делаю твиттер-копию, и сейчас я пытаюсь показать все сообщения от пользователей, за которыми следует другой пользователь. Я новичок на рубин и рельсов, так что я мог бы делать это действительно странно способ ..Почему я получаю это NoMethodError

Эти файлы у меня есть:

сессия # home.html.erb

<h2 class='User_Header'> Home <h2> 

<%= link_to "New Post", controller: "posts", action: "new" %> 
<%= link_to "Log Out", :controller => "sessions", :action => "logout" %> 
<%= show_tweets("following") %> 

sessions_helper

module SessionsHelper 

    def show_tweets(opt) 
     if opt == "following" 
      @sub = Subscription.where("userID = ?", @current_user.id) 
      @post = Post.where("user_id = ?", @sub.followingID) 

      render partial: 'shared/follower_tweets' 
     end 
    end 

    def show_tweet(s) 
     @post = Post.where("user_id = ?", s.id) 
     render partial: 'shared/tweet' 
    end 

    def tweet_username(p) 
     @username = User.where("id = ?", p.user_id) 
     Rails.logger.debug @username.inspect 
     render partial: 'shared/user' 
    end 
end 

_follower_tweets.html.erb

<h2>Tweets</h2> 

<table> 
    <tr> 
     <th>Username</th> 
     <th>Tweet</th> 
    </tr> 

    <% div_for(@post, class: 'post') do %> 
     <td><%= tweet_username(@post) %></td> 
     <td><%= @post.content %></td> 
    <% end %> 
</table> 

_user.html.erb

<%= @username %> 

session.rb

class Session < ActiveRecord::Base 
    attr_accessible :content, :user_id, :followingID, :userID 
end 

Ошибка

приложение/просмотры/сессии/home.html.erb где строка # 9 поднятые:

undefined method `followingID' for #<ActiveRecord::Relation:0x007fd74b66f8a8> 
+0

Ваш 'модель Subscription' не имеет метод, называемый' followingID'. –

+0

Я пытаюсь получить значение nextID подписки. У меня есть таблица в db, где я сохраняю все подписки, followID - это столбец в этой таблице. – Alexander

+0

Вы добавили 'attr_accessible: followID' в свою модель' Subscription'? –

ответ

0

Что происходит, что у вас есть followingID на вашей модели Session вместо модели Subscription. Должно быть что-то вроде следующего:

class Subscription < ActiveRecord::Base 
    attr_accessible :followingID 
end 

Однако проблема больше. Вы должны прочитать о Active Record Associations, то вы могли бы сделать что-то вроде

@subs = @current_user.subscriptions 
@posts = @current_user.posts 
0

проверить, если ассоциация вашей модели является правильной. сообщения указывают на наличие ошибки.

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