2017-02-09 24 views
0

Я обновляю свое приложение от rails3 до rails4. В friendship.controller.rb У меня есть строка @friend = User.find (params [: friend_id]) Несомненно, это должно идентифицировать друга с идентификатором, соответствующим значению friend_id в таблице дружеских отношений. Он возвращает пробел. User.find (params [: id]) возвращает 340, который является идентификатором дружбынайти в Rails4 не работает как ожидалось

Любые идеи?

enter code here 
    `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 `

`

+0

вы можете разместить код для контроллера дружбы? –

+0

Выполнено Я надеюсь, что помогает – gleb

+0

ваша модель Пользователь и Дружба? любая ассоциация? если да, то вы можете напрямую получить доступ к 'current_user.friend.fields_of_friend_table' и не использовать @ для current_user, если вы используете devise. или вы можете использовать объект @user, если таблицы связаны –

ответ

0

User.find(id_of_user) метод принимает идентификатор пользователя по умолчанию не любой другой атрибут, если вы хотите найти другого параметра вы можете использовать where или find_by_attribute.

User.where(:friend_id => params[:friend_id]) или

User.find_by_friend_id(params[:friend_id)

+0

User.find_by_friend_id (params [: friend_id]) дает «неопределенный метод' find_by_friend_id »« User.where (: friend_id => params [: friend_id]) дает нулевой результат – gleb