在Rails4中找不到预期的行为
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Rails4中找不到预期的行为相关的知识,希望对你有一定的参考价值。
我正在将我的应用程序从rails3升级到rails4。在friendship.controller.rb中我有一行@friend = User.find(params [:friend_id])当然这应该识别友谊表中与friend_id值相对应的id的朋友。它返回一个空白。 User.find(params [:id])返回340,这是友谊的id
有任何想法吗?
class FriendshipController < ApplicationController
include ProfileHelper
before_filter :setup_friends
def create
Friendship.request(@user, @friend)
user = @user
friend = @friend
#MakeMailer.friend_request(user,friend).deliver
flash[:notice] = "Friend request sent."
redirect_to user_path(@user.id)
end
def accept
if @user.requested_friends.include?(@friend)
Friendship.accept(@friend, @user)
flash[:notice] = "Friendship with #{@friend.login} accepted!"
else
flash[:notice] = "No friendship request from #{@friend.login}."
end
redirect_to user_path(@user.id)
end
def decline
if @user.requested_friends.include?(@friend)
Friendship.breakup(@user, @friend)
flash[:notice] = "Friendship with #{@friend.login} declined"
else
flash[:notice] = "No friendship request from #{@friend.login}."
end
redirect_to user_path(@user.id)
end
def cancel
if @user.pending_friends.include?(@friend)
Friendship.breakup(@user, @friend)
flash[:notice] = "Friendship request canceled."
else
flash[:notice] = "No request for friendship with #{@friend.login}"
end
redirect_to user_path(@user.id)
end
def delete
if @user.friends.include?(@friend)
Friendship.breakup(@user, @friend)
flash[:notice] = "Friendship with #{@friend.login} deleted!"
else
flash[:notice] = "You aren't friends with #{@friend.login}"
end
redirect_to user_path(@user.id)
end
private
def setup_friends
@user = @current_user
@friend = User.where(:id => params[:friend_id])
end
end
答案
User.find(id_of_user)
方法默认使用用户的id而不是任何其他属性,如果你想通过其他参数搜索,你可以使用where
或find_by_attribute
。
User.where(:friend_id => params[:friend_id])
或
User.find_by_friend_id(params[:friend_id)
以上是关于在Rails4中找不到预期的行为的主要内容,如果未能解决你的问题,请参考以下文章
Android 片段,在 TabHost 中找不到 id 的视图