Rails - 如何将局部变量传递给共享文件夹中的部分变量?
Rails - How to pass a local variable to partial in a shared folder?
我正在尝试让评论显示在博客中 post。评论与 post 相关联。但我不知道如何将 @post.comments
传递给共享文件夹中的部分文件。
这是错误:
undefined method `body' for #<Comment::ActiveRecord_Associations_CollectionProxy:>
这是 show.html.erb
文件中的部分调用:
<%= render partial: 'shared/comment', locals: { comment: @post.comments } %>
这是 _comment.html.erb
部分:
<%= comment.name %>
<%= comment.body %>
<%= comment.created_at %>
评论模型迁移:
create_table :comments do |t|
t.string :name
t.text :body
t.references :post, index: true, foreign_key: true
但模型不是问题,因为我可以使用简单的 <%= render @post.comments %>
并将 _comment.html.erb
部分放在 /views/comments/ 文件夹中。但是,我想将所有部分保留在 /shared 文件夹中(并首先了解为什么它甚至可以工作)。
我花了几个小时在这里寻找解决方案并一遍又一遍地阅读 this。尝试了所有可能的变化。有什么想法吗?
您尝试呈现的似乎是一个集合,但您将其视为单个对象,尝试遍历它们并呈现每个项目。
顺便说一下,使用 REPL 暂停程序的执行并检查变量可能会极大地帮助您调试此类问题。
您甚至可以检查全局变量和局部变量 运行 您的自定义代码并查看结果。
Pry 是事实上的标准 atm。
试试下面的代码。
<%= render partial: 'shared/comment', collection: @post.comments, as: :comment %>
我正在尝试让评论显示在博客中 post。评论与 post 相关联。但我不知道如何将 @post.comments
传递给共享文件夹中的部分文件。
这是错误:
undefined method `body' for #<Comment::ActiveRecord_Associations_CollectionProxy:>
这是 show.html.erb
文件中的部分调用:
<%= render partial: 'shared/comment', locals: { comment: @post.comments } %>
这是 _comment.html.erb
部分:
<%= comment.name %>
<%= comment.body %>
<%= comment.created_at %>
评论模型迁移:
create_table :comments do |t|
t.string :name
t.text :body
t.references :post, index: true, foreign_key: true
但模型不是问题,因为我可以使用简单的 <%= render @post.comments %>
并将 _comment.html.erb
部分放在 /views/comments/ 文件夹中。但是,我想将所有部分保留在 /shared 文件夹中(并首先了解为什么它甚至可以工作)。
我花了几个小时在这里寻找解决方案并一遍又一遍地阅读 this。尝试了所有可能的变化。有什么想法吗?
您尝试呈现的似乎是一个集合,但您将其视为单个对象,尝试遍历它们并呈现每个项目。
顺便说一下,使用 REPL 暂停程序的执行并检查变量可能会极大地帮助您调试此类问题。
您甚至可以检查全局变量和局部变量 运行 您的自定义代码并查看结果。
Pry 是事实上的标准 atm。
试试下面的代码。
<%= render partial: 'shared/comment', collection: @post.comments, as: :comment %>