【问题标题】:Rendering another controllers action as a partial from another view in Rails将另一个控制器动作渲染为 Rails 中另一个视图的部分
【发布时间】:2016-07-30 22:28:22
【问题描述】:

在我看来,我正在尝试从另一个控制器(例如 controllerB)呈现部分(例如在 controllerA 中)。局部使用静态内容正确呈现,但是在尝试访问实例变量时,它失败了。实例变量由控制器 B 中的动作实例化,但在简单渲染部分时从不调用此动作。

有没有办法在渲染局部之前调用一个动作?

【问题讨论】:

  • 分享一些您遇到错误的代码。可能是您的控制器操作、视图、部分。

标签: ruby-on-rails


【解决方案1】:

当您渲染模板/部分时,它使用的实例变量必须存在。如果模板/部分属于另一个动作,则正在执行的动作负责初始化部分使用的所有实例变量。

一般来说,一个动作直接执行其他控制器的动作并不是一个好主意。引导流程的正确方法是使用redirect_to

redirect_to post_url(@post)

但是,由于您的关注是局部的,因此只需在当前操作中初始化所有必要的变量。

【讨论】:

    【解决方案2】:

    你能试试这个吗?

    render 'posts/show'
    

    我将在 posts_controller 中渲染 show 动作。

    【讨论】:

      猜你喜欢
      • 2010-12-18
      • 2012-11-06
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      相关资源
      最近更新 更多