我的控制器:
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抱歉我的英语不好。
答案 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