2017-05-18 15 views
0

My-Controller definiert:nicht definierte Methode `complete_name‘, aber das Verfahren ist bereits

class RoomsController < ApplicationController 
    before_action :set_room, only: [:show, :edit, :update, :destroy] 

    def nome_completo 
    "#{title}, #{location}" 
    end 


    # GET /rooms 
    # GET /rooms.json 
    def index 
    @rooms = Room.all 
    end 

    # GET /rooms/1 
    # GET /rooms/1.json 
    def show 
    end 


    # GET /rooms/new 
    def new 
    @room = Room.new 
    end 

    # GET /rooms/1/edit 
    def edit 
    end 
...... 
end 

Meine Ansicht:

<h1>Quartos recém postados</h1> 
<ul> 
    <% @rooms.each do |room| %> 
    <li><%= link_to room.nome_completo , room %></li> 
    <% end %> 
</ul> 

The error: undefined method `nome_completo' for #Room:0x0000000ed6d478

Wie Sie sehen, ich habe bereits meine Methode in der Steuerung definiert , aber wenn ich versuche, es in der Ansicht zu nennen, habe ich diese Nachricht erhalten. Dies geschieht mit allen Methoden, die ich definiere, aber nicht mit den Methoden, die mit der Klasse geliefert wurden.

P.S Sorry für mein schlechtes Englisch.

+3

Ihre Methode wird auf dem 'RoomsController' definiert, wenn sie stattdessen im' Room'-Modell definiert werden soll. – Zoran

Antwort

2

Die Methode fehlt im Room Modell, nicht im Controller. Ihr Fehler sagt genau das gleiche aus.

The error: undefined method `nome_completo' for #Room:0x0000000ed6d478

Wenn die Methode auf den RoomsController genannt wird Sie sehen würde:

The error: undefined method `nome_completo' for #RoomsController:0x0000000ed6d478

Der Controller für Anfragen und Antworten verantwortlich ist, das Room Modell ist für Räume verantwortlich.

Fügen Sie Ihre Methode zu app/models/room.rb hinzu.

class Room < ActiveRecord::Base # ApplicationRecord Rails >= 5 
    def nome_completo 
    "#{title}, #{location}" 
    end 
end 
Verwandte Themen