将实例对象作为参数传递给redirect_to方法

时间:2017-02-20 07:27:06

标签: ruby-on-rails ruby

我正在学习Ruby on Rails,我不确定我的理解是否正确。

我只是在控制器中定义一个方法:

def create
  page_params = params.require(:page).permit(:title, :body, :slug)
  @page = Page.new(page_params)
  #render text: @page.to_json
  @page.save
  redirect_to @page
end

首先,我将表单数据存储到实例变量@page中,然后使用render text: @page.to_json查看对象中的内容,其中包含:

{
  id: null,
  title: "This a new post",
  body: "This a new post This a new post",
  slug: "This a new post",
  created_at: null,
  updated_at: null
}

第一个问题是@page中似乎没有url信息,Rails如何通过@page知道路径?

另一个问题是当我将此实例对象传递给redirect_to时,它是否为redirect_to url_for(@page)的语法糖?

2 个答案:

答案 0 :(得分:1)

路由在routes.rb文件中定义。有关详细信息,请参阅http://guides.rubyonrails.org/routing.html。 要查看应用程序的路径,有两种方法,即

a. Execute rake:routes in your terminal.
b. Open localhost:3000/anywrongroute

它将显示应用程序中的所有路径。

答案 1 :(得分:0)

我发现@Horse Voice之前已经提出了类似的问题,@ Nishant提供了一个很好的解释here