我对编程很陌生,正在通过官方Getting Started guide工作。这将引导新的RoR程序员通过一个实用的博客应用程序,该应用程序涉及有很多评论的CRUD文章。
article_path经常出现,但我根本不知道它的作用,含义,使用方式等等。
以下是本指南如何使用article_path的一些示例:
<%= form_for :article, url: articles_path do |f| %>
(在app / views / articles / new.html.erb中)
<%= link_to 'Back', articles_path %>
(也在app / views / articles / new.html.erb中)
def destroy
@article = Article.find(params[:id])
@article.destroy
redirect_to articles_path
end
(在app / controllers / articles_controller.rb中)
class CommentsController < ApplicationController
def create
@article = Article.find(params[:article_id])
@comment = @article.comments.create(comment_params)
redirect_to article_path(@article)
end
(在app / controllers / comments_controller.rb中)
我非常感谢解释,因为我想完全理解特定代码行的作用。
感谢您的时间
答案 0 :(得分:4)
articles_path
会产生类似http://yourserver.com/articles
的内容,与ArticlesController
和index
行动相关联。
因此,article_path(@article)
会产生类似http://yourserver.com/articles/1234567
的内容,与ArticlesController
和show
操作相关联,并生成ID为{{1}的文章页面}。
您也可以在命令行上执行1234567
并查看所有详细信息
答案 1 :(得分:1)
您的routes.rb文件中的以下内容:
match '/articles/all' => 'articles#getAll', :via => [:get], :as => :articles_complete
可以调用我提到的articles_path。在上面的示例中,给domain.com/articles的任何请求都将映射到articles#index。而不是向'/ articles'发出请求,你可以使用'articles_path'
另一个例子:
{{1}}
对yourserver.com/articles/all的任何请求都将映射到articles控制器和getAll Action。您可以只调用'articles_complete_path',而不是提及'/ articles / all'。我命名为articles_complete而不是articles_all来显示所使用的约定。