Ruby on rails 在Rails中将数据从控制器传递到视图的推荐方式是什么?

Ruby on rails 在Rails中将数据从控制器传递到视图的推荐方式是什么?,ruby-on-rails,model-view-controller,Ruby On Rails,Model View Controller,据我所知,有两种方法: 设置实例变量 声明一个助手方法 我想知道在view和controller之间共享数据的推荐/最佳方式是什么,为什么 此外,为什么传递多个变量被认为是一种糟糕的做法 我希望尽可能地将视图与控制器分离。我知道这是一个过于宽泛的问题。而且,受大量意见的影响(这并不重要)。然而,从设计的角度来看,这并不是一个完全无趣的问题 因此,最近在我的项目中,几乎我所有的控制器都开始像这样: # app/controllers/foo_controller.rb class Fo

据我所知,有两种方法:

  • 设置实例变量
  • 声明一个助手方法
我想知道在view和controller之间共享数据的推荐/最佳方式是什么,为什么

此外,为什么传递多个变量被认为是一种糟糕的做法


我希望尽可能地将视图与控制器分离。

我知道这是一个过于宽泛的问题。而且,受大量意见的影响(这并不重要)。然而,从设计的角度来看,这并不是一个完全无趣的问题

因此,最近在我的项目中,几乎我所有的控制器都开始像这样:

  # app/controllers/foo_controller.rb
  class FooController < ApplicationController

    ...

    def create
      @result = FooManager.create(params)
      if @result[:success]
        redirect_to successful_create_path
      else
        redirect_to unsuccessful_create_path
      end
    end

    ...

  end
  # app/managers/foo_manager.rb
  class FooManager

    ...

    class << self

      def create(params)
        # do stuff 
        # always return a hash which optionally includes :success 
        # depending on whether create was successful or not
      end

    end
  end
#app/controllers/foo_controller.rb
类FooController<应用程序控制器
...
def创建
@结果=FooManager.create(参数)
如果@result[:success]
将\u重定向到成功的\u创建\u路径
其他的
将\u重定向到不成功的\u创建\u路径
结束
结束
...
结束
我有这样的“经理”(很多人称他们为“服务”或“服务对象”):

  # app/controllers/foo_controller.rb
  class FooController < ApplicationController

    ...

    def create
      @result = FooManager.create(params)
      if @result[:success]
        redirect_to successful_create_path
      else
        redirect_to unsuccessful_create_path
      end
    end

    ...

  end
  # app/managers/foo_manager.rb
  class FooManager

    ...

    class << self

      def create(params)
        # do stuff 
        # always return a hash which optionally includes :success 
        # depending on whether create was successful or not
      end

    end
  end
#app/managers/foo_manager.rb
班级经理
...

同学们,这个问题有点太宽泛了。如果不知道你的具体情况,就很难提供任何有用的建议。你不能真正地“将视图与控制器解耦”,因为控制器是专门用来呈现和处理视图的。尽管根据SO准则,这个问题感觉有点离题,但我认为Rails初学者了解从控制器将数据传递到视图的最优化方法会有所帮助。如果在Rails方面有丰富经验的人可以回答这个问题,请。。。。向上投票。@Artur:看看这里: