0
我有以下操作方法:的行動呼籲在Rails的工作原理
class CommandsController < ApplicationController
.
.
.
def usersList
@command = Command.find_by(id: params[:id])
@users_list = @command.user_commands.paginate(page: params[:page], per_page: 10)
end
end
以下觀點:users_list.html.erb
<% provide(:title, "Command list") %>
<h1>Lista Utenti per <%= @command.content %></h1>
<%= will_paginate @users_list %>
<ul class="users">
<% @users_list.each do |user| %>
<li><%= user.name.capitalize %>, <%= user.email %></li>
<% end %>
</ul>
而在routes.rb中
get 'commands/:id/usersList' => 'commands#users_list', as: :list
現在我不明白爲什麼要去lochalhost:3000/commands/1/usersList我收到以下錯誤:
undefined method `content' for nil:NilClass
refered排隊<h1>Lista Utenti per <%= @command.content %></h1>
它爲什麼這樣做呢?當我調用一個動作時,在呈現頁面之前,然後在執行該方法內的代碼之後?
我通過更改名稱解決了這個問題:usersList --> userslist
然後users_list.html.erb --->userslist.html.erb
並在routes.rb中---->get 'commands/:id/userslist' => 'commands#userslist', as: :list
那我就不明白了命名約定......如果我宣佈一個動作usersList應該如何我重命名相關視圖?
你確定'Command.find_by(id:params [:id])'實際上會返回一些東西嗎?如果在控制檯中執行它會發生什麼? – Miotsu
我在控制檯中執行它,並且都運行正常,它檢索到相關命令對象 – zer0uno
我通過更改名稱來解決問題: – zer0uno