我有两个不同的控制器,它们有自己的feed(索引)动作,我希望它们显示在一个页面(home)上。帖子和请求模型不相似,并且包含不同类型的数据(图像,视频链接,字符串等)。
在我的帖子控制器中我有这个动作。它在同一个控制器中使用两个API动作,并使用指定的记录信息填充@post_array,然后将其显示在posts / feed.html.erb视图中:
def feed
if user_signed_in?
post_feed_authenticated
else
post_feed_not_authenticated
end
end
在我的请求控制器中,我有一个类似的操作,它返回带有所有相关请求记录的@request_array,并将它们显示在requests / feed.html.erb中。
def feed
request_feed
end
操作调用的方法按位置,身份验证和ID过滤所有记录。
我已经为这些正常工作的操作创建了单独的视图,但我希望将它们组合在一起,以便两个Feed显示在同一页面上(home.html.erb)。我该怎么做呢?我已经读过使用部分内容,但由于数据不同,我不确定这是否适用。
编辑: 家庭控制器是:
def home_page
end
home_page.html.erb目前有相应帖子/请求Feed的按钮。我想将两个Feed放在home_page上。
答案 0 :(得分:0)
您可以在家庭控制器的索引操作中创建每个类的实例:
@posts = Post.all
@requests = Requests.all
然后您可以访问每个类中的所有变量和方法。
(将索引从上方更改为您命名为主页的任何内容。)
答案 1 :(得分:0)
根据我的理解 - 您希望重复使用视图以及在您的主视图中填充@post_array
和@request_array
的代码。我认为这些是不同解决方案的两个不同问题:
home
视图中重复使用该视图。@post_array
填充方式,您可以尝试将该逻辑放在HomeController
有权访问的位置,最好是Post
模型(即Post.feed(current_user, location)
})或服务对象。另一种执行此操作的方法是将这些方法放在ApplicationController
中,使其在所有控制器中都可用。