ruby-on-rails - redirect_to 方法如何在 ruby​​ 中工作

标签 ruby-on-rails ruby

这是我的更新功能,当某些内容被更新时,它会完美地转到 http://localhost:3000/articles/2

 def update
    @article = Article.find(params[:id])
    if @article.update(article_params)
      redirect_to @article
    else
      render 'edit'
    end
  end

redirect_to @article 如何工作并显示 artiles/2/页面?

下面是我的路线

       Prefix Verb   URI Pattern                  Controller#Action
     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
              PATCH  /articles/:id(.:format)      articles#update
              PUT    /articles/:id(.:format)      articles#update
              DELETE /articles/:id(.:format)      articles#destroy
welcome_index GET    /welcome/index(.:format)     welcome#index
         root GET    /                            welcome#index

最佳答案

神奇的方法是polymorphic_url

当您调用 link_toredirect_to 等并且您不传递字符串或路由选项的散列时,Rails 将最终调用此方法。

Active Record(和 Active Model 兼容对象)有一个 model_name 类方法,它返回一个 ActiveMethod::Name 对象,它有一堆方法来获取模型类的“正确”名称各种用途。

其中一个 (singular_route_key) 说明了路径中模型使用的名称。如果您在引擎中,这还会处理诸如命名空间之类的事情。

在最简单的情况下,这可以归结为

@article.class.model_name.singular_route_key #=> 'article'

Rails 然后通过将其与任何前缀选项和正确的后缀('url'、'path' 等)连接起来,从中生成方法名称,并以类似 article_url 的方法名称结尾>。然后调用该方法(根据您的路由文件为您生成),传递文章,该文章返回本文的 url。

关于ruby-on-rails - redirect_to 方法如何在 ruby​​ 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23082683/

相关文章:

ruby-on-rails - 在 Rails 3 中,如何解析 ISO8601 日期字符串以获取 TimeWithZone 实例?

ruby-on-rails - 生成不生成代码

ruby-on-rails - 使用 ILIKE 查询时的 PostgreSQL 优先级

ruby - 如何检查两个字符串是否包含ruby中的相同字符

ruby-on-rails - 如何删除 Ruby on Rails 中散列中的重复项?

ruby-on-rails - ROR模型关联问题

ruby - 使用用户密码对数据库数据进行加密的最佳方法是什么?

ruby-on-rails - Stripe 取消用户订阅

jquery - S3 "Invalid according to Policy: Policy expired"

ruby-on-rails - 获取Rails中公共(public)文件夹内文件的绝对路径