我对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
答案 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。