Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## error when user with id=2 goes to show action for user 1
- Started GET "/users/1" for 127.0.0.1 at 2011-04-23 01:55:56 -0700
- Processing by UsersController#show as HTML
- Parameters: {"id"=>"1"}
- User Load (1.0ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 1) LIMIT 1
- Post Load (1.0ms) SELECT "posts".* FROM "posts" WHERE ("posts".user_id = 1) ORDER BY posts.created_at DESC LIMIT 10 OFFSET 0
- User Load (1.3ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 2) LIMIT 1
- Relationship Load (0.2ms) SELECT "relationships".* FROM "relationships" WHERE ("relationships".follower_id = 2) AND ("relationships"."followed_id" = 1) LIMIT 1
- Rendered users/_follow.html.erb (5.9ms)
- Rendered users/_follow_form.html.erb (74.3ms)
- SQL (0.3ms) SELECT COUNT(*) AS count_id FROM (SELECT 1 FROM "posts" WHERE ("posts".user_id = 1)) AS subquery
- Appreciation Load (0.2ms) SELECT "appreciations".* FROM "appreciations" WHERE ("appreciations".liker_id = 2) AND ("appreciations"."liked_id" IS NULL) LIMIT 1
- Appreciation Load (0.2ms) SELECT "appreciations".* FROM "appreciations" WHERE ("appreciations".liker_id = 2) AND ("appreciations"."liked_id" = 1) LIMIT 1
- Rendered users/_unlike.html.erb (36.6ms)
- Rendered users/_like_form.html.erb (106.9ms)
- Rendered posts/_post.html.erb (111.0ms)
- Rendered users/show.html.erb within layouts/application (205.6ms)
- Completed in 336ms
- ActionView::Template::Error (undefined method `model_name' for NilClass:Class):
- 1: <%= form_for(current_user.appreciations.find_by_liked_id(@user),
- 2: :html => { :method => :delete },
- 3: :remote => true) do |f| %>
- 4: <div class="actions"><%= f.submit "Unlike" %></div>
- app/views/users/_unlike.html.erb:1:in `_app_views_users__unlike_html_erb__3699679043085055303_2179921300__681871052201265919'
- app/views/users/_like_form.html.erb:6:in `_app_views_users__like_form_html_erb___4423424333270842212_2177904820_342311628635728804'
- app/views/posts/_post.html.erb:11:in `_app_views_posts__post_html_erb__1503387184621506678_2177975860__3593252078086836064'
- app/views/users/show.html.erb:8:in `_app_views_users_show_html_erb___3967304258457997387_2177316840_3488789899950577638'
- Rendered /Users/ihal/.rvm/gems/ruby-1.9.2-p136@rails3gemset/gems/actionpack-3.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.4ms)
- Rendered /Users/ihal/.rvm/gems/ruby-1.9.2-p136@rails3gemset/gems/actionpack-3.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (506.5ms)
- Rendered /Users/ihal/.rvm/gems/ruby-1.9.2-p136@rails3gemset/gems/actionpack-3.0.1/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (554.7ms)
- ## users/show.html.erb
- <table class="profile" summary="Profile information">
- <tr>
- <td class="main">
- <h1><%= @user.name %></h1>
- <%= render 'follow_form' if user_signed_in? %>
- <% unless @user.posts.empty? %>
- <table class="posts" summary="User posts">
- <%= render @posts %> # I heard that this passes the object to /posts/_post which
- </table> # allows the local var in post.content (its no defined anywhere else)
- <%= will_paginate @posts %>
- <% end %>
- </td>
- <td class="sidebar round">
- <%= link_to avatar_for(@user), @user.avatar.url %><br />
- <strong>Name</strong> <%= @user.name %><br />
- <strong>URL</strong> <%= link_to user_path(@user), user_path(@user) %>
- <strong>Posts</strong> <%= @user.posts.count %>
- <%= render 'shared/stats' %>
- </td>
- </tr>
- </table>
- ## posts/_post.html.erb
- <tr>
- <td class="post">
- <span class="title"><strong><%= link_to post.title, post %></strong></span><br />
- <span class="image"><strong>Image: </strong><%= image_tag post.image_url.to_s %></span><br />
- <span class="a_name"><strong>Artist: </strong><%= post.a_name %></span><br />
- <span class="item_name"><strong>Title: </strong><%= post.item_name %></span><br />
- <span class="a_twitter"><strong>Twitter: </strong><%= post.a_twitter %></span><br />
- <span class="g_from"><strong>Gotten From: </strong><%= post.g_from %></span><br />
- <span class="content"><strong>Plot: </strong><%= post.content %></span><br />
- <%= render(:partial => 'users/like_form') if user_signed_in? %>
- <span class="timestamp">
- Posted <%= time_ago_in_words(post.created_at) %> ago. </span>
- <a href="<%= likers_post_path(@post) %>">Likers</a><span id="likers"><br />
- </span>
- </td>
- <% if current_user?(post.user)%>
- <td>
- <%= link_to "delete", post, :method => :delete,
- :confirm => "You sure?",
- :title => post.content %>
- </td>
- <%end%>
- </tr>
- ## users/_like_form
- <% unless current_user?(@user) %>
- <div id="like_form">
- <% if current_user.likes?(@post) %>
- <%=render(:partial => 'users/unlike') %>
- <% else %>
- <%=render(:partial => 'users/unlike') %>
- <% end %>
- </div>
- <% end %>
- ## users/_unlike
- <%= form_for(current_user.appreciations.find_by_liked_id(@user),
- :html => { :method => :delete },
- :remote => true) do |f| %>
- <div class="actions"><%= f.submit "Unlike" %></div>
- <% end %>
- ## users/_like
- <%= form_for(current_user.appreciations.
- build(:liked_id => @post.id),
- :remote => true) do |f| %>
- <div><%= f.hidden_field :liked_id %></div>
- <div class="actions"><%= f.submit "Like" %></div>
- <% end %>
- ## users controller
- class UsersController < ApplicationController
- before_filter :authenticate_user!, :except => [:create, :show, :new]
- def show
- @user = User.find(params[:id])
- @posts = @user.posts.paginate(:per_page => "10",:page => params[:page])
- @title = @user.name
- end
- def following
- @title = "Following"
- @user = User.find(params[:id])
- @users = @user.following.paginate(:page => params[:page])
- render 'show_follow'
- end
- def followers
- @title = "Followers"
- @user = User.find(params[:id])
- @users = @user.followers.paginate(:page => params[:page])
- render 'show_follow'
- end
- def likes
- @title = "Likes"
- @user = User.find(params[:id])
- @liked = @user.likes.paginate(:page => params[:page])
- render 'show_likes'
- end
- def likers
- @title = "Likers"
- @user = User.find(params[:id])
- @likers = @user.likers.paginate(:page => params[:page])
- render 'show_likers'
- end
- end
- ## posts controller
- class PostsController < ApplicationController
- before_filter :authenticate_user!, :only => [:create, :edit, :update, :destroy]
- before_filter :authorized_user, :only => [:destroy, :edit, :update]
- def create
- @user = current_user
- @post = current_user.posts.build(params[:post])
- if @post.save
- flash[:success] = "Post created!"
- redirect_to root_path
- else
- @feed_items = current_user.feed.paginate(:per_page => "10", :page => params[:page])
- render 'pages/home'
- end
- end
- def index
- @posts = Post.paginate(:page => params[:page])
- end
- def show
- @post = Post.find(params[:id])
- end
- def destroy
- @post.destroy
- redirect_to root_path
- end
- private
- def authorized_user
- @post = Post.find(params[:id])
- redirect_to root_path unless current_user?(@post.user)
- end
- end
- ## appreciations controller
- class AppreciationsController < ApplicationController
- before_filter :authenticate_user!
- def create
- @post = Post.find(params[:appreciation][:liked_id])
- current_user.like!(@post)
- redirect_to @post
- end
- def destroy
- @post = Appreciation.find(params[:id]).liked
- current_user.unlike!(@post)
- redirect_to @post
- end
- end
- ## user model
- class User < ActiveRecord::Base
- has_many :appreciations, :dependent => :destroy,
- :foreign_key => "liker_id"
- has_many :likes, :through => :appreciations, :source => :liked
- def likes?(liked)
- appreciations.find_by_liked_id(liked)
- end
- def like!(liked)
- appreciations.create!(:liked_id => liked.id)
- end
- def unlike!(liked)
- appreciations.find_by_liked_id(liked).destroy
- #following
- has_many :relationships, :dependent => :destroy,
- :foreign_key => "follower_id"
- has_many :reverse_relationships, :dependent => :destroy,
- :foreign_key => "followed_id",
- :class_name => "Relationship"
- has_many :following, :through => :relationships, :source => :followed
- has_many :followers, :through => :reverse_relationships, :source => :follower
- # following and followers
- def following?(followed)
- relationships.find_by_followed_id(followed)
- end
- def follow!(followed)
- relationships.create!(:followed_id => followed.id)
- end
- def unfollow!(followed)
- relationships.find_by_followed_id(followed).destroy
- end
- ## post model
- belongs_to :user
- has_many :reverse_relationships, :dependent => :destroy,
- :foreign_key => "liked_id",
- :class_name => "Appreciations"
- has_many :likers, :through => :reverse_relationships, :source => :liker
- ## relationships model
- class Relationship < ActiveRecord::Base
- attr_accessible :followed_id
- belongs_to :follower, :foreign_key => "follower_id", :class_name => "User"
- belongs_to :followed, :foreign_key => "followed_id", :class_name => "User"
- validates :follower_id, :presence => true
- validates :followed_id, :presence => true
- end
- ## routes.rb
- Gp2011::Application.routes.draw do
- match 'auth/:provider/callback' => 'authentications#create'
- resources :authentications
- devise_for :users, :controllers => {:registrations => 'registrations'}
- resources :posts do
- member do
- get :likers
- end
- end
- resources :relationships, :only => [:create, :destroy]
- resources :appreciations, :only => [:create, :destroy]
- root :to => "pages#home"
- match '/contact', :to => 'pages#contact'
- match '/about', :to => 'pages#about'
- match '/help', :to => 'pages#help'
- match '/blog', :to => 'pages#blog'
- resources :users do
- member do
- get :following, :followers, :likes
- end
- end
- ## appreciations migration
- class CreateAppreciations < ActiveRecord::Migration
- def self.up
- create_table :appreciations do |t|
- t.integer :liker_id
- t.integer :liked_id
- t.timestamps
- end
- add_index :appreciations, :liker_id
- add_index :appreciations, :liked_id
- end
- def self.down
- drop_table :appreciations
- end
- end
Add Comment
Please, Sign In to add comment