动作调用如何在Rails中起作用

时间:2013-09-24 08:16:51

标签: ruby-on-rails controller action


我有以下行动方法:

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我应该如何重命名相关的视图?

1 个答案:

答案 0 :(得分:0)

您应将操作名称更改为users_list