如何在Buffalo中从新文章网址重定向到表演文章网址

时间:2019-03-07 22:52:17

标签: go buffalo

我正在布法罗(Buffalo)建立博客网站,但遇到了一些问题。我在<class 'tfp_backoffice.apps.student_solution.admin.StudentSolutionInlineAdmin'>: (admin.E202) 'org.Org' has no ForeignKey to 'student_solution.StudentSolution'.中有以下路线:

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

我遇到的问题是当我尝试进行重定向时,它指向正确的URL <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> <% } %> ,但是正文正在尝试使用localhost:3000/blog/post/my-blog-post-here模板而不是{ {1}}。那么,我需要怎么做才能使重定向点指向正确的URL并包含正确的正文?我曾尝试在blogs/index.html中将blogs/show.html设置为<%= form_for(blog, {action: blogPath(), method: "POST"}) { %>,但是在进入<%= form_for(blog, {action: blogPostPath(), method: "POST"}) { %>时需要the子时出现错误。

1 个答案:

答案 0 :(得分:0)

似乎是路由问题。 我偶然发现了这种问题。 它与路线分配的顺序有关。 路由器是顺序敏感的;它将路由到第一个匹配的声明... 在您的情况下,匹配的第一条路线可能是“ /” 我不是100%确信,但是请尝试以另一种方式进行ex:

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

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

blogGroup.GET(“ /”,b.List) blogGroup.GET(“ / new”,b.New)