【发布时间】:2013-11-19 21:20:21
【问题描述】:
Rails 3.2,Twitter 应用
更新:已解决但知道为什么它可能会工作一次,然后当我再次尝试时,我在第 16 行得到Unknown key: #<User:0x007f9a5a946708> @user users_controller.rb。如果我更新状态或重新登录就可以了。
解决方案:在每个 if/else 下添加 notice: "Added", redirect_to_path 后,它工作正常。我无法为“找不到用户”生成错误。
我有一个form_for,我输入:username,它会关注或取消关注。取消关注不起作用。看起来像这样。
Error
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "id"
LINE 1: DELETE FROM "relationships" WHERE "id"."follower_id" = 1 AND...
^
: DELETE FROM "relationships" WHERE "id"."follower_id" = 1 AND "id"."followed_id" = 2
id 不见了?所以我认为问题出在relationship_controller.rb
/users/buddies.html.erb
<%= form_for :username, :url => {:action => :buddies} do |f| %>
<%= f.text_field @user, placeholder: "username" %>
<%= f.submit "Add/Subtract" %>
<% end %>
users_controller.rb
@user = User.find_by_username(params[:username])
if @user
unless @user.blank?
if current_user.following? @user
current_user.unfollow @user
else
current_user.follow @user
end
else
flash[:error] = "stupid error";
end
end
user.rb
def following? user
self.followeds.include? user
end
def follow user
Relationship.create follower_id: self.id, followed_id: user.id
end
def unfollow user
Relationship.delete follower_id: self.id, followed_id: user.id
end
relationships_controller.rb
def create
@relationship = Relationship.new(params[:relationship])
#@relationship.followed_id = params[:followed_id]
@relationship.follower_id = current_user.id
if @relationship.save
redirect_to buddies_path, notice: "Phriend added"
else
flash[:error] = "Phriend not added";
redirect_to buddies_path
end
end
def delete
@relationship = Relationship.find(params[:id])
@relationship.delete
redirect_to buddies_path, notice: "Phriend subtracted"
end
这么多字,但看看Relationship.delete..那里需要改变什么?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 postgresql twitter