【问题标题】:Rails: Mailer view with a different name from its actionRails:Mailer 视图的名称与其操作不同
【发布时间】:2017-04-28 07:02:42
【问题描述】:

我想查找与特定邮件程序视图对应的操作邮件程序。 似乎没有带有邮件程序视图名称的邮件程序操作。 在这种情况下如何找到邮件程序操作?

附言 我正在编写不是我编写的 Rails 代码。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2 ruby-on-rails-3.1


    【解决方案1】:

    首先检查mailers文件夹,然后找到邮件类,如:

    class UserMailer < ActionMailer::Base
    ...
    
    end
    

    那么视图位于/views/user_mailer 文件夹中

    【讨论】:

    • 我没听懂你的回答。例如,如果 mailer view 的名字是 'foo' 并且它对应的 mailer action 是 'bar',我怎么可能只知道它的 view 的名字就知道 action 的名字呢?
    • 如果在 user_mailer/abc.html.erb 中查看,则邮件操作在 mailers/user_mailer.rb 文件中,操作名称为 abc
    • 不是我的情况。我有一个邮件程序视图,其名称与任何邮件程序操作都不匹配。我在所有邮件文件夹中搜索了该名称
    • 那么该邮件视图不会在任何地方使用
    • 如果视图是部分的,那么它可能会在另一个邮件视图中使用
    【解决方案2】:

    您可以使用排除扩展名的文件名进行搜索,例如,如果您有一个视图文件名order.html.erb,则应在app/mailers 目录中使用order 进行搜索。

    例如,我在app/mailers 目录中有一个invoice mailer,如下所示

    class InvoiceMailer < ActionMailer::Base
        def order
            #.... 
        end
    end
    

    我在app/views/invoice_mailer 目录中有一个order.html.erb 对应的视图文件,用于订购邮件。

    【讨论】:

    • 做到了。没有找到任何与视图名称匹配的邮件操作(不包括扩展名)
    • 你可以通过你的开发服务器日志来追踪,什么是调用和渲染,然后你就有希望得到一个想法。
    【解决方案3】:

    有一个邮件操作(与视图的名称不同),它呈现了视图。向render 函数发送参数时,该操作未明确使用视图名称。该操作接收视图名称作为参数,然后将该参数作为参数发送给render 函数。动作的参数是从模型发送的。这就是为什么我在 mailer 文件夹中找不到视图的名称

    【讨论】:

      猜你喜欢
      • 2019-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多