加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 将部件从一个控制器的视图渲染到另一个控制器

发布时间:2020-12-16 19:55:48 所属栏目:百科 来源:网络整理
导读:我有一个名为“show”的控制器的视图.在这个视图中,我想渲染另一个控制器视图的内容 – 显然,该视图上的表单的逻辑与它所属的控制器进行通信.我该如何做?我相当新的轨道,我对框架还没有100%的信心. 你几乎可以把它们视为“小部件”.我知道您可以通过使用以
我有一个名为“show”的控制器的视图.在这个视图中,我想渲染另一个控制器视图的内容 – 显然,该视图上的表单的逻辑与它所属的控制器进行通信.我该如何做?我相当新的轨道,我对框架还没有100%的信心.

你几乎可以把它们视为“小部件”.我知道您可以通过使用以下方式从同一控制器呈现动作:

render :action => "show_home_page",:layout=> false

但是我需要它从另一个控制器渲染动作(视图).

即.

I have a view,which is
rendered onto a layout. That view,
belongs to controller A.
I need to render the “index” and “new”
views from controller B inside the original view (above)

.

解决方法

你的问题中的术语有点困惑.如果在控制器中,并且要在另一个控制器中执行另一个操作方法中的代码并呈现其模板,则应该重定向到该操作.让我们说另一个控制器叫做ContractsController
redirect_to :controller => "contracts",:action => "show_home_page"

如果您只想使用其他方法的视图模板作为操作的响应,则只需在render参数中指定控制器的名称.这不会调用action,它只会使用它的模板.

例如,如果模板位于合约控制器的文件夹中.

render :action => "/contracts/show_home_page",:layout=> false

我认为在这种情况下,你实际上是在谈论一个部分,这将是一样的

render :partial => "/contracts/show_home_page"

但是,我看到你在这里抓到的是,你实际上想要调用多个动作方法来渲染一个页面.这不是它的工作原理.您将必须设置模板将在单个操作中引用的对象.这是大多数Rails开发人员将大量代码放在模型中的一个原因,所以在整个控制器上都不会重复安装.

但是还有另一种方式… JavaScript的魔力来了.

在您的页面中,创建如下功能:

<script type="text/javascript" language="javascript">    
function load_categories() {
            <%= remote_function(:url => {:controller => "categories",:action => "list"},:update => "categories")%>
        };
</script>

如果你在页面上的onload中调用它,它将使用id“categories”替换所引用的操作的响应.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读