gpt4 book ai didi

go - 如何从新的帖子 url 重定向到 Buffalo 中的显示帖子 url

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

我正在布法罗建立一个博客网站,但遇到了一些问题。我在 app.go 中有以下路线:

b := BlogsResource{}
blogGroup := app.Group("/blog")
blogGroup.GET("/", b.List)
blogGroup.GET("/new", b.New)
blogGroup.GET("/post/{slug}", b.Show)
blogGroup.GET("/post/{slug}/edit", b.Edit)
blogGroup.POST("/", b.Create)
blogGroup.PUT("/post/{slug}", b.Update)
blogGroup.DELETE("/post/{slug}", b.Destroy)
blogGroup.Middleware.Skip(Authorize, b.List, b.Show)

还有我的blogs.go资源创建方法如下所示:

func (v BlogsResource) Create(c buffalo.Context) error {
// Allocate an empty Blog
blog := &models.Blog{}

// Bind blog to the html form elements
if err := c.Bind(blog); err != nil {
return errors.WithStack(err)
}

// Get the DB connection from the context and validate it
tx := c.Value("tx").(*pop.Connection)
verrs, err := blog.Create(tx)

if err != nil {
return errors.WithStack(err)
}

if verrs.HasAny() {
// Make the errors available inside the html template
c.Set("errors", verrs)

// Render again the new.html template that the user can
// correct the input.
return c.Render(422, r.Auto(c, blog))
}

// If there are no errors set a success message
c.Flash().Add("success", T.Translate(c, "blog.created.success"))
// and redirect to the blogs index page
return c.Redirect(302, "blogPostPath()", render.Data{"slug": blog.Slug})
}

new.html看起来像这样:

<div class="page-header">
<h1>New Blog</h1>
</div>

<%= form_for(blog, {action: blogPath(), method: "POST"}) { %>
<%= partial("blogs/form.html") %>
<a href="<%= blogPath() %>" class="btn btn-warning" data-confirm="Are you sure?">Cancel</a>
<% } %>

我遇到的问题是当我尝试进行重定向时,它指向正确的 url localhost:3000/blog/post/my-blog-post-here , 但 body 正试图使用​​ blogs/index.html模板而不是 blogs/show.html .那么,我需要做什么才能使重定向指向正确的 URL 并包含正确的正文?我试过设置 <%= form_for(blog, {action: blogPath(), method: "POST"}) { %><%= form_for(blog, {action: blogPostPath(), method: "POST"}) { %>new.html ,但是在转到 localhost:3000/blog/new 时我需要 slug 时出现错误.

最佳答案

看起来像是路由问题。我偶然发现了这种问题。这与路由声明的顺序有关。路由器是顺序敏感的;它将路由到第一个匹配的声明...也许在您的情况下,匹配的第一条路线是“/”我不是 100% 确定,但请尝试反过来尝试 ex :

blogGroup.GET("/post/{slug}", b.Show)

blogGroup.GET("/post/{slug}/edit", b.Edit)

blogGroup.GET("/", b.List)blogGroup.GET("/new", b.New)

关于go - 如何从新的帖子 url 重定向到 Buffalo 中的显示帖子 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55054086/

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