我有以下行动方法:
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
引用行<h1>Lista Utenti per <%= @command.content %></h1>
它为什么这样做?当我调用一个动作时,它在呈现页面之前然后在它执行方法中的代码之后?
我通过更改名称解决了问题:usersList --> userslist
然后users_list.html.erb --->userslist.html.erb
以及routes.rb ----&gt; get 'commands/:id/userslist' => 'commands#userslist', as: :list
然后我不明白命名约定...如果我声明一个动作userList我应该如何重命名相关的视图?
答案 0 :(得分:0)
您应将操作名称更改为users_list
。