1

Rails Gemacts_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

これを修正する方法を知っている人はいますか?ありがとう。

4

1 に答える 1

0

を取り外しますto_param。などの URL ヘルパーを使用している場合はmember_follows_path、ID を渡す必要があります。ERB の観点からは、オブジェクト自体 (ERB がレンダリングするときに ID に解決されます) を渡す必要があります。

または、Rails コントローラーで、findを などfind_by_user_nameのフィールドに変更すると、その行が機能するはずです。これは遅くなることに注意してください。特に、適切なインデックス作成/パーティション化を行わない大規模なデータベースがある場合は注意してください。

于 2013-09-24T03:10:03.837 に答える