Ruby on rails 充当安装的跟随者
我试图用它来工作,但我肯定是在路线上做错了什么 添加了gem:Ruby on rails 充当安装的跟随者,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我试图用它来工作,但我肯定是在路线上做错了什么 添加了gem: gem'充当追随者 在用户模型中: 充当跟随者 作为可遵循的行为 在Post模型中: class Post < ActiveRecord::Base belongs_to :user mount_uploader :avatar, AvatarUploader acts_as_followable end 作为可遵循的行为 在我的页面控制器中: class PageController < Ap
gem'充当追随者
在用户模型中:
充当跟随者
作为可遵循的行为
在Post模型中:
class Post < ActiveRecord::Base
belongs_to :user
mount_uploader :avatar, AvatarUploader
acts_as_followable
end
作为可遵循的行为
在我的页面控制器中:
class PageController < ApplicationController
def index
end
def profile
@posts = Post.all.order("created_at desc").where( "user_id = ?", User.find_by_id(params[:id]) )
@post = Post.new
end
def feed
@posts = Post.all.order("RANDOM()")
end
def home
end
def follow
@user = User.find(params[:id])
current_user.follow(@user)
end
def unfollow
@user = User.find(params[:id])
current_user.stop_following(@user)
end
def block
@user = User.find(params[:id])
@post.block(@user)
end
end
问题是,即使Users表(designe)没有user\u id列,当user\u id设置为nil时,我总是会得到一个异常错误
当我在控制器中定义@user时,它为什么要搜索用户id
问题是否在routes.rb中
更新
全柱模型:
class Post < ActiveRecord::Base
belongs_to :user
mount_uploader :avatar, AvatarUploader
acts_as_followable
end
纵断面图:
<%= link_to "Back", root_path %>
<%= link_to "Follow", follow_user_path(@user) %>
<br>
<br>
<%= render 'posts/form' %>
<br>
<br>
<% @posts.each do |post| %>
<p><%= post.description %>, <%= time_ago_in_words(post.created_at) %> ago</p>
<%= image_tag post.avatar, :class => "tumbnial" %>
<br>
<% if user_signed_in? %>
<% if post.user_id == current_user.id %>
<%= link_to "Delete post", post_path(post), :method => :delete %>
<% end %>
<% end %>
<% end %>
,前
“tumbnial”%>
:删除%>
@Raymond看起来您在配置文件中错过了@user
实例的初始化操作:
def profile
@user = User.find(params[:id])
@posts = Post.all.order("created_at desc").where(user_id: @user.id)
@post = Post.new
end
还要注意的是,当您使用find\u by\u id(…)
查找用户时,如果找不到用户,您将得到nil,所以在下一个代码中可能是不正确的行为。最好使用find(…)
,这将引发异常,您可以以某种方式处理它,例如通过重定向到包含有关该异常的flash消息的某个页面,或者您可以使用find by_id
执行相同的操作,但请确保找到了用户
在采取行动之前,最好将此功能提取到某些功能中,例如:
class PageController < ApplicationController
before_action :load_user, only: [:profile, :follow, :unfollow, :block]
def profile
@posts = Post.all.order("created_at desc").where(user_id: @user.id)
@post = Post.new
end
def feed
@posts = Post.all.order("RANDOM()")
end
def home; end
def follow
current_user.follow(@user)
end
def unfollow
current_user.stop_following(@user)
end
def block
@post.block(@user)
end
private
def load_user
@user = User.find_by_id(params[:id])
# here you can redirect to some place with flash message if @user.blank?
end
end
class PageController
查看您的模型和完整的异常日志会很有帮助。@BorisPilgun,更新了问题OK,请同时添加app/views/page/profile.html.erb的内容,并在其中呈现部分内容(如果有)。-正如您从日志中看到的,从那里开始出现错误。另外,如果您可以将完整错误与错误消息和错误描述(如果存在)一起包含,则只包含堆栈跟踪。不要犹豫,添加尽可能多的调试信息,它简化了过程:)@BorisPilgun我添加了纵断面图代码,但对于错误日志,我已经全部发布了。错误基本上是从你是一个救生员开始的:P
def profile
@user = User.find(params[:id])
@posts = Post.all.order("created_at desc").where(user_id: @user.id)
@post = Post.new
end
class PageController < ApplicationController
before_action :load_user, only: [:profile, :follow, :unfollow, :block]
def profile
@posts = Post.all.order("created_at desc").where(user_id: @user.id)
@post = Post.new
end
def feed
@posts = Post.all.order("RANDOM()")
end
def home; end
def follow
current_user.follow(@user)
end
def unfollow
current_user.stop_following(@user)
end
def block
@post.block(@user)
end
private
def load_user
@user = User.find_by_id(params[:id])
# here you can redirect to some place with flash message if @user.blank?
end
end