undefined方法`complete_name'但该方法已经定义

时间:2017-05-18 16:12:29

标签: ruby-on-rails ruby

我的控制器:

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

我的观点:

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

错误:       未定义的方法`nome_completo&#39;对于#Room:0x0000000ed6d478

正如您所看到的,我已经在控制器中定义了我的方法,但是当我尝试在视图中调用它时,我收到了此消息。这种情况发生在我定义的所有方法中,但不包括该类附带的方法。

P.S抱歉我的英语不好。

1 个答案:

答案 0 :(得分:3)

Room模型中缺少该方法,而不是控制器。您的错误说明完全相同。

  

错误:未定义的方法`nome_completo&#39;对于#Room:0x0000000ed6d478

如果在RoomsController上调用该方法,请参阅:

  

错误:未定义的方法`nome_completo&#39;对于#RoomsController:0x0000000ed6d478

控制器负责请求和响应,Room模型负责房间。

将您的方法添加到app/models/room.rb

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