Ruby on rails 重定向到@article和article路径之间有什么区别

Ruby on rails 重定向到@article和article路径之间有什么区别,ruby-on-rails,Ruby On Rails,我遵循这条铁路指南。我有以下代码 class ArticlesController < ApplicationController def new end def show @article = Article.find(params[:id]) end def create @article = Article.new(article_params) @article.save r

我遵循这条铁路指南。我有以下代码

class ArticlesController < ApplicationController
    def new
    end

    def show
        @article = Article.find(params[:id])
    end
    def create
        @article = Article.new(article_params)
        @article.save

        redirect_to @article
    end


    private 

        def article_params
            params.require(:article).permit(:title, :text)
        end
end
根据路线,我提到了文章的路径。但当我这样做时,它将我重定向到/articles而不是/articles/:id


谁能解释一下发生了什么事

article\u path
需要使用
article.id
@article
(响应
到\u param
的对象)的参数调用。

article\u path
需要使用
article.id
@article
的参数调用(一个响应
to_param
的对象)

要正确重定向,必须使用
重定向到文章路径(@article)
。这样Rails就知道它应该重定向到什么文章。

要正确重定向,必须使用
重定向到文章路径(@article)
。这样Rails就知道应该重定向到哪篇文章。

这对我来说似乎很明显

当您重定向到@article时,您正在重定向到由存储在变量中的实例定义的文章。这当然意味着/articles/:id,其中:id是存储在变量中的该文章的id

但是,当您重定向到articles\u path时,您不会转到某个特定的文章,而是转到所有文章的URL,即/articles。如果您重定向到article\u path(现在是单数)而不告诉您想要哪篇文章,您将被重定向到相同的位置,您可能会找到所有文章,即/articles

这只是一个思考REST调用语义的问题


希望有帮助!

这对我来说似乎很明显

当您重定向到@article时,您正在重定向到由存储在变量中的实例定义的文章。这当然意味着/articles/:id,其中:id是存储在变量中的该文章的id

但是,当您重定向到articles\u path时,您不会转到某个特定的文章,而是转到所有文章的URL,即/articles。如果您重定向到article\u path(现在是单数)而不告诉您想要哪篇文章,您将被重定向到相同的位置,您可能会找到所有文章,即/articles

这只是一个思考REST调用语义的问题


希望有帮助!

articles\u path
转到索引。如果使用
article\u path
您需要传入文章id(或者传入文章对象也有效)
article\u path(@article)
articles\u path
转到索引。如果使用
article\u path
您需要传入文章id(或者传入article对象也有效)
article\u路径(@article)
Prefix Verb   URI Pattern                  Controller#Action
welcome_index GET    /welcome/index(.:format)     welcome#index
         root GET    /                            welcome#index
     articles GET    /articles(.:format)          articles#index
              POST   /articles(.:format)          articles#create
  new_article GET    /articles/new(.:format)      articles#new
 edit_article GET    /articles/:id/edit(.:format) articles#edit
      article GET    /articles/:id(.:format)      articles#show
      # the above route
              PATCH  /articles/:id(.:format)      articles#update
              PUT    /articles/:id(.:format)      articles#update
              DELETE /articles/:id(.:format)      articles#destroy