我正在使用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
那里的任何人都知道如何解决这个问题?感谢。
答案 0 :(得分:0)
删除to_param
。当您使用URL帮助程序时,例如member_follows_path
,您需要传递ID,或者从ERB的角度来看,对象本身(当ERB呈现时它将解析为ID)
或者,在您的rails控制器中,将find
更改为类似find_by_user_name
或类似字段的内容,然后该行应该有效。请注意,这将会变慢,尤其是如果您有一个没有正确索引/分区的大型数据库。