【问题标题】:Rails -> action method for partial viewsRails -> 部分视图的操作方法
【发布时间】:2015-05-24 14:40:28
【问题描述】:

我对 Rails 很陌生,想知道如何为部分渲染指定/分配操作方法(在控制器内)。

例如,

我有模型 A,它与 cmets 相关联(我们称之为模型 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

【问题讨论】:

    标签: ruby-on-rails views partial


    【解决方案1】:

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

    我认为你在这里有点困惑。在 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

    【讨论】:

    • 欣赏背景和答案,很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多