gpt4 book ai didi

go - 带“--skip-model”标志的“Generate resource”命令导致资源错误

转载 作者:行者123 更新时间:2023-12-01 22:21:38 25 4
gpt4 key购买 nike

描述
刚开始使用Buffalo,尝试所有漂亮的功能:)
但是,“generate resource”命令与“--skip-model”标志结合使用时出现问题。使用此标志时,所有生成的函数(“列表”,“显示”,“创建”,“更新”和“销毁”)将全部以小写形式创建。但是,也生成的结构引用了“buffalo.Resource”,并且包含这些函数,首字母大写,导致资源不起作用。
重现问题的步骤

  • 使用带有“--skip-model”标志的生成资源命令:buffalo g r todo --skip-model
  • 使用:buffalo dev运行应用程序。
  • 导航至“http://127.0.0.1:3000/todoes”;验证您是否收到一条错误消息,指出“运行时错误:无效的内存地址或nil指针取消引用”。
  • 在生成的文件中验证“todoes.go”完全包含小写形式的生成函数(“List”,“Show”,“Create”,“Update”和“Destroy”),而生成的结构称为“TodoesResource”到“buffalo.Resource”并包含这些函数,首字母大写。

  • 预期行为
    我希望生成的函数的首字母大写,与“buffalo.Resource”中的名称匹配,并导航到“http://127.0.0.1:3000/todoes”时产生响应“Todo#list”(之后启动应用程序)。当您不使用“--skip-model”标志时就是这种情况,因此我不确定为什么当您使用此标志时其行为会有所不同。
    实际行为
    生成的函数(“列表”,“显示”,“创建”,“更新”和“销毁”)完全是小写字母,而生成的名为“TodoesResource”的结构引用了“buffalo.Resource”,并且包含这些函数以及大写的第一个字母。导航到“http://127.0.0.1:3000/todoes”(启动应用程序后),这将导致错误“运行时错误:无效的内存地址或nil指针取消引用”。
    建议的解决方案
    我无法创建请求请求(因为在尝试发布分支时收到错误消息“gobuffalo / buffalo.git的权限被拒绝”),但是我认为有两个可能的解决方案:
    首选解决方案
    修改文件“genny / resource / templates / standard / action / resource-name.go.tmpl”以更改以下代码:
    // {{$a.String}} default implementation.
    func (v {{$.opts.Name.Resource}}Resource) {{$a.String}}(c buffalo.Context) error {
    return c.Render(http.StatusOK, r.String("{{$.opts.Model.Proper}}#{{$a.String}}"))
    }
    并将其更改为:
    // {{$a.Pascalize}} default implementation.
    func (v {{$.opts.Name.Resource}}Resource) {{$a.Pascalize}}(c buffalo.Context) error {
    return c.Render(http.StatusOK, r.String("{{$.opts.Model.Proper}}#{{$a.Pascalize}}"))
    }
    替代解决方案
    修改文件“genny / resource / actions.go”以更改以下代码:
    func actions(opts *Options) []name.Ident {
    actions := []name.Ident{
    name.New("list"),
    name.New("show"),
    name.New("create"),
    name.New("update"),
    name.New("destroy"),
    }
    if opts.App.AsWeb {
    actions = append(actions, name.New("new"), name.New("edit"))
    }
    return actions
    }
    并将其更改为:
    func actions(opts *Options) []name.Ident {
    actions := []name.Ident{
    name.New("List"),
    name.New("Show"),
    name.New("Create"),
    name.New("Update"),
    name.New("Destroy"),
    }
    if opts.App.AsWeb {
    actions = append(actions, name.New("New"), name.New("Edit"))
    }
    return actions
    }

    最佳答案

    这是一个错误,目前正在修复。另请参见:https://github.com/gobuffalo/buffalo/issues/2023

    关于go - 带“--skip-model”标志的“Generate resource”命令导致资源错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63149666/

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