从 rails 中创建的记录获取 ID

getting Id from created record in rails

这里是网络开发新手,我想我可能缺少一些非常基础的知识。给定代码

> def create
>     @post = Post.new(post_params)
>     if @post.save
>         redirect_to @post
>     else
>         render "new"
>     end   
 end

保存 post 后,它重定向到显示页面,由于这个“redirect_to @post”,我怎么能用“[=20=”做同样的事情]: action => "show", :id => 5" 我现在必须传递 ID,如何从 @post 对象中检索 ID?

所以只有我可以将 Id 传递给重定向页面。

我可以在这里停止编译器吗,就像 js 中的调试器一样?

Ruby 有一个 pry-byebug gem 用于调试。它是 REPL (Pry) 和核心调试器 (byebug) 的组合,可以非常强大地协同工作。

获取成功保存的 ActiveRecord 模型的 id 只是 @post.id,但是像 redirect_to 这样的 rails 方法只会获取对象本身很好,正如@Beartech 上面提到的。 The documentation 展示了多种使用方式,为了方便:

redirect_to action: "show", id: 5
redirect_to @post
redirect_to "http://www.rubyonrails.org"
redirect_to "/images/screenshot.jpg"
redirect_to posts_url
redirect_to proc { edit_post_url(@post) }

要回答您“我可能缺少一些非常基础的知识”的问题,是的,您可能是。 Rails 中的 object 如@post 通常是数据库记录。您可以使用列名作为方法来访问数据库中的任何列:

@post.id

returns:

 5 #or whatever the post id is.

如果您的 post table 有一列“标题”,您可以使用

访问它
@post.title

returns:

"This is an awesome post" 

我强烈建议您查看一些 Ruby 和一些 Rails 教程。 Ruby 中的所有内容都是 object。 Rails 使用了很多约定,因此您无需编写代码就可以做事,它已经为您准备好了。当您进入 Rails ActiveRecord Relations 时,您会看到关系会扩展它以向您提供相关的 table 信息作为方法。例如:

Post.rb

...
belongs_to :user

User.rb

...
has_many :posts

为您提供如下方法:

@post.user   #returns the user object with all of its info
@post.user.username   #returns the value of that column for that user
@post.user.posts     #returns an array of Post objects that belong to the owner of that post.