2016-12-30 8 views
0

könnte man mir raten, wie man @friend in meinem Controller definiert. Ich habe @friend als @friend = User.find_by_email(params[:id]) definiert, aber dies wird nicht abgeholt. wenn man freundlich erklären könnte, wäre ich sehr dankbarundefined methode `id 'für nil: NilClass - referentielle association - rails 4

i erhalten derzeit diesen Fehler

undefined method `id' for nil:NilClass 

enter image description here

views/Karten/show.html.erb

<div class="current_connection"> 
    <%= friendship_status(@user, @friend) %> 
    </div> 

in meinem cards_controller.rb

class CardsController < ApplicationController 
    before_action :set_card, only: [:show, :edit, :update, :destroy] 
    before_filter :setup_friends 

    def index 
    ... 
    end 

    def show 
    end 

    def new 
    ... 
    end 

    ... 

    private 
    def set_card 
     @card = Card.find(params[:id]) 
    end 

    def setup_friends 
     @user = User.find(current_user.id) 
     @friend = User.find_by_email(params[:id]) 
    end 

    def card_params 
     params.require(:card).permit(:title, :event_id) 
    end 
end 

frienship_helper.rb

module FriendshipsHelper 
    # Return an appropriate friendship status message. 
    def friendship_status(user, friend) 
    friendship = Friendship.find_by_user_id_and_friend_id(user.id, friend.id) 
    return "#{friend.firstname} is not in your network (yet)" if friendship.nil? 
    case friendship.status 
    when 'requested' 
     "#{friend.firstname} wants to connect with you" 
    when 'pending' 
     "You have requested to connect with #{friend.firstname}" 
    when 'accepted' 
     "#{friend.firstname} is in your network" 
    end 
    end 
end 

Routen

Rails.application.routes.draw do 

    devise_for :users 
    resources :users do 
    resources :events 
    end 

    resources :events do 
    resources :cards 
    end 
end 

Antwort

2

Scheint wie params[:id] nicht Benutzer-E-Mail enthalten, es enthält Karte anstelle ID. Bitte überprüfen Sie Ihre Parameter sorgfältig.

User.find_by_email(params[:id]) gibt nil zurück, wenn ein Benutzer mit email == params[:id] nicht existiert.

Verwandte Themen