Rails gem acts_as_follower创建/销毁错误:无法找到id =“username”的成员(用户)

时间:2013-09-23 22:17:42

标签: ruby-on-rails ruby gem

我正在使用Rails Gem acts_as_follower建立一个跟随系统,我遇到了一个我不确定如何修复的问题。

当我按照'testuser1'用户名进行操作时,我收到此错误:

Couldn't find Member with id=testuser1

app/controllers/follows_controller.rb:6:in `create'

Parameters:

{"_method"=>"post",
"authenticity_token"=>"FnqLCCQYcFGMerOB56/G6dlPvzpPhPDFbxCXaiDBOUU=",
"member_id"=>"testuser1"}

这是我的控制器:

class FollowsController < ApplicationController

before_filter :authenticate_member!

def create
    @member = Member.find(params[:member_id])
    current_member.follow(@member)
 end

def destroy
    @member = Member.find(params[:member_id])
    current_member.stop_following(@member)
end

end

创建关注的表单:

<%= link_to("Follow", member_follows_path(member.to_param), :method => :post, :class => "btn") %>

<%= link_to("Following", member_follow_path(member.to_param, current_member.get_follow(member).id), :method => :delete, :class => "btn btn-follow") %>

这就是我定义to_param的方式,因为这是你进入会员/用户页面的方式:

def to_param
  user_name
end

那里的任何人都知道如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:0)

删除to_param。当您使用URL帮助程序时,例如member_follows_path,您需要传递ID,或者从ERB的角度来看,对象本身(当ERB呈现时它将解析为ID)

或者,在您的rails控制器中,将find更改为类似find_by_user_name或类似字段的内容,然后该行应该有效。请注意,这将会变慢,尤其是如果您有一个没有正确索引/分区的大型数据库。