0


我有以下操作方法:

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 ---->get 'commands/:id/userslist' => 'commands#userslist', as: :list 然后我不明白命名约定...如果我声明一个操作 usersList 我应该如何重命名相关视图?

4

1 回答 1

0

您应该将您的操作名称更改为users_list.

于 2013-09-24T08:33:37.563 回答