Rails - >部分视图的动作方法

时间:2015-05-24 14:40:28

标签: ruby-on-rails views partial

我对rails非常陌生,想知道如何为部分渲染指定/分配动作方法(在控制器中)。

例如,

我有模型A,它与评论相关联(我们称之为模型B)。模型B具有用于局部视图的构造,其从模型A中的视图调用 - >

<%= render :partial => "comments/form", :controller => "comments", :action => "form %>

当模型A从模型B调用此部分渲染时,如何在模型B的控制器中定义每次模型A要求此视图时调用的方法?例如,每次模型A调用部分渲染,然后将调用在模型B控制器中定义的“形式”方法。在此先感谢!!

class CommentsController < ApplicationController

    def form
        flash[:notice] = "Comment was successfully loaded."
    end

end

1 个答案:

答案 0 :(得分:0)

有可能,这只是一个非常糟糕的主意。

我觉得你在这里有点困惑。在MVC控制器中,将模型传递给视图。模型不会(也不应该)知道它们被传递给视图或以局部方式呈现。

模型处理数据和业务逻辑,视图将其呈现给用户,控制器处理响应用户输入并将其传递给模型。

在Rails中,每个请求都由一个控制器处理。在您的情况下,您可能希望执行以下操作:

class PostsController < ApplicationController
  def show
    @post = Post.includes(:comments).find(params[:id])
    @comments = @post.comments
    flash[:notice] = "Comments loaded." if @comments.any?
    render :show
  end
end

如果您想在控制器之间重用代码,可以使用concerns