gpt4 book ai didi

ruby-on-rails - Rails Controller 中未初始化的常量错误

转载 作者:数据小太阳 更新时间:2023-10-29 08:44:47 24 4
gpt4 key购买 nike

这是我的 Controller 目录结构

controllers/
.........../dashboard
...................../admin
.........................../admin_controller.rb
.........................../item_controller.rb
........../items_controller.rb

我希望管理员可以添加新项目,并且用户可以看到所有项目。

我输入了 rails g scaffold dashboard/admin/items 来快速生成带有命名空间的 Controller 。

然后我修改了@dashboard_admin_items = Dashboard::Admin::Item.all

@dashboard_admin_items = Item.all

controllers/dashboard/admin/items_controller.rb

class Dashboard::Admin::ItemsController < Dashboard::Admin::AdminController
before_action :set_dashboard_admin_item, only: [:show, :edit, :update, :destroy]

# GET /dashboard/admin/items
def index
@dashboard_admin_items = Item.all

end
...

但是它抛出了这个错误 enter image description here

此外,我已将此项目放在 github 上.

更新

view/dashboard/admin/items/index.html.erb

<tbody>
<% @Items.each do |i| %>
<tr>
<th><%= i.id %></th>
<th><%= i.name %></th>
<th><%= i.price %></th>
<!-- <td><%#= link_to 'Show', dashboard_admin_item %></td> -->
<td>
<%= link_to 'Edit', edit_dashboard_admin_item_path(dashboard_admin_item) %>
<%= link_to 'Destroy', dashboard_admin_item, method: :delete, data: { confirm: 'Are you sure?' } %>
</td>
</tr>
<% end %>
</tbody>

controllers/dashboard/admin/items_controller.rb

def index
@Items = Item.all
end

最佳答案

问题是您有两个 item.rb 文件,一个在 app/model/item.rb 下另一个在 app/models/dashboard/admin/item.rb 下.因此,存在冲突。

要使用 app/model/item.rb,请按以下方式使用:::Item.all

::Item 表示您指的是来自顶级命名空间的 Item 类,即 app/model/item.rb

我在本地运行了您的代码。如果你改变它工作正常:

  def index
@dashboard_admin_items = Item.all
end

到:

  def index
@Items = ::Item.all
end

而且,您已经在 app/views/dashboard/admin/items/index.html.erb 中使用了 @Items

关于ruby-on-rails - Rails Controller 中未初始化的常量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32879298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com