【问题标题】:Render template in other view with another controller使用另一个控制器在其他视图中渲染模板
【发布时间】:2016-04-13 13:49:17
【问题描述】:

如何使用其他控制器将模板渲染到另一个视图?我想在模态中生成“索引”模板,但是这个模态是在其他视图中与其他控制器一起生成的。所以我必须在控制器中创建必须为其他“索引”操作设置的对象。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4


    【解决方案1】:

    您可以定义在其他控制器的视图中使用的所有必需的实例变量,并将其呈现在您想要的任何位置:

    render "other_controller/action"
    

    如果您要共享某些元素(如模态框内容),更好的方法是将其提取到共享部分 (shared/_your_partial.html.erb) 并将其包含在其他视图中。那将是一种更加模块化的方式。

    或者,您可能希望使用 jQuery 来填写模态框内容,如下所示:

    $('#some-button').click(function(event){
      event.preventDefault();
      $('#modal-box').load('controller2/index');
    });
    

    【讨论】:

    • 但我想了一个更好的主意,我们不必将两个控制器混为一个;)
    • 不要混合使用 2 个逻辑上不同的控制器,但如果您有共享功能,请提取并重用它。基本上,SRP 和 DRY 原则。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    相关资源
    最近更新 更多