首页 > 解决方案 > Rails ViewComponent,无法通过渲染传递对象或字符串

问题描述

我正在尝试使用ViewComponent gem,但似乎无法正确使用它,他们的示例组件可以正常工作并传递字符串,但是通过我自己的我没有运气。

文件夹结构:

- app
-- components
--- post_component.rb
--- post_component.html.erb

posts_controller.rb

def index
  @post = "This is a post"
end

posts/index.html.erb我有:

  <%= render(PostComponent.new(post: @post)) %>

post_component.html.erb

<p><%= @post %></p>

最后,在post_component.rb

class PostComponent < ViewComponent::Base
  def initalize(post: )
    @post = post
  end
end

然而,这不会导致任何渲染。以前我试图通过执行以下操作来渲染整个对象:

@posts = Post.all

@posts.each do | p |
  <%= render(PostComponent.new(post: p)) %>
end 

然后尝试通过内部分配的关联显示信息,post_component.rb但这不起作用,所以我尝试了上述方法。

编辑提一下,以上两者的输出都是nil.

非常感谢任何帮助/建议,谢谢。

标签: ruby-on-railsrubycomponents

解决方案


推荐阅读