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