gpt4 book ai didi

ruby-on-rails - 在应用程序 html.erb 中使用 Controller 变量

转载 作者:数据小太阳 更新时间:2023-10-29 07:25:34 28 4
gpt4 key购买 nike

我可能为我的第一个网站付出了太多努力,但我想在( Bootstrap )导航栏上制作一个灵活的下拉菜单,并显示已保存工作类别的名称。

这是我在 application.html.erb 文件中尝试做的:

  <ul class="dropdown-menu">
<% @workcategory.each do |workcategory| %>
<li><%= workcategory.name%></li>
<% end %>

失败并出现错误未定义的方法each' for nil:NilClasson the<% @workcategory.each do |workcategory| %>` 行。

这是工作类别 Controller :

class WorkcategoriesController < ApplicationController
before_action :find_workcategory, only: [:edit, :update, :destroy]
def index
@workcategories = Workcategory.all.order("created_at DESC")
end
def new
@workcategory = Workcategory.new
end
def create
@workcategory = Workcategory.new(post_params)
if @workcategory.save
flash[:notice] = "Workcategory created"
redirect_to(:action=>'index', :workcategory_id => @workcategory.id)
else
@workcategories = Workcategories.order()
render('new')
end
end

def edit
end

def update
end

def destroy
@workcategory.destroy
redirect_to workcategory_path
end
private
def find_workcategory
@workcategory=Workcategory.find(params[:id])
end
def post_params
params.require(:workcategory).permit(:name)
end
end

欢迎任何提示和帮助,即使与最初的问题无关:)谢谢

最佳答案

如果您希望在您的所有操作中使用它,明智的做法是将它放在您的 application_controller.rb 中。

before_filter :set_work_categories

def set_work_categoriers
@w_categories = Workcategory.all.order("created_at DESC")
end

这应该可以正常工作。

还有一个提示。

您可以在模型 WorkCategory.rb 中使用 default_scope {order(created_at: :desc)}

然后你可以像这样使用它,

def set_work_categoriers
@w_categories = Workcategory.all
end

我建议将变量名称更改为@w_categories,否则它将与您在index 操作中的@work_categories 名称冲突。

在你的application.html.erb文件中,改变

<% unless @w_categories.nil? %>
<ul class="dropdown-menu">
<% @w_categories.each do |workcategory| %>
<li><%= workcategory.name%></li>
<% end %>
</ul>
<%end>

我想这应该可以解决问题

关于ruby-on-rails - 在应用程序 html.erb 中使用 Controller 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33122533/

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