Rails 中的哈希问题

发布于 01-08 02:10 字数 626 浏览 4 评论 0原文

我在名为 a_level: 的方法中使用以下代码,

if(@program.theme==MyHelper::TemplateConstants::DEFAULT_LAYOUT)
  style = 'border: none'
elsif(@program.theme == MyHelper::TemplateConstants::LOGO_LAYOUT)
  style = 'border: top'
end

中的名为 b_level: 的方法中使用以下代码

if(@program.theme==MyHelper::TemplateConstants::DEFAULT_LAYOUT)
  style = 'color: #888;'
elsif(@program.theme == MyHelper::TemplateConstants::LOGO_LAYOUT)
  style = 'color: #666;'

并在同一帮助程序 。我想用散列代替,就像

my_styles = { :level_a => {... }, :level_b => {...} }

我没有得到正确的东西。 任何帮助表示赞赏!

Im using the following code within a method called a_level:

if(@program.theme==MyHelper::TemplateConstants::DEFAULT_LAYOUT)
  style = 'border: none'
elsif(@program.theme == MyHelper::TemplateConstants::LOGO_LAYOUT)
  style = 'border: top'
end

And the following within a method called b_level:

if(@program.theme==MyHelper::TemplateConstants::DEFAULT_LAYOUT)
  style = 'color: #888;'
elsif(@program.theme == MyHelper::TemplateConstants::LOGO_LAYOUT)
  style = 'color: #666;'

in the same helper. I want to use a hash instead, something like

my_styles = { :level_a => {... }, :level_b => {...} }

Im not getting it right.
Any help is appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒中人2025-01-15 02:10:37

我想你正在寻找这个:

style_hash = {
    :program_logo => {
        UserMailerHelper::EmailTemplateConstants::DEFAULT_WITH_BANNER => 'border: none;height:50px;float:left; margin-right: 10px; padding: 2px;',
        UserMailerHelper::EmailTemplateConstants::LOGO_AT_BOTTOM => 'border: none;height:80px; padding: 2px 0px 2px 2px;'
    },
    :do_not_reply => {
        UserMailerHelper::EmailTemplateConstants::DEFAULT_WITH_BANNER => 'color: #888; padding-top: 5px; display:block; text-align:center',
        UserMailerHelper::EmailTemplateConstants::LOGO_AT_BOTTOM => 'color: #888; padding-top: 5px; border-top: 1px solid #D7D4C6;'
    }
}

然后在 program_logo:

style = style_hash[:program_logo][@program.email_theme]

do_not_reply:

style = style_hash[:do_not_reply][@program.email_theme]

或者也许安排你的 style_hash 更有意义像这样:

style_hash = {
    UserMailerHelper::EmailTemplateConstants::DEFAULT_WITH_BANNER => {
        :program_logo => 'border: none;height:50px;float:left; margin-right: 10px; padding: 2px;',
        :do_not_reply => 'color: #888; padding-top: 5px; display:block; text-align:center'
    },
    UserMailerHelper::EmailTemplateConstants::LOGO_AT_BOTTOM => {
        :program_logo => 'border: none;height:80px; padding: 2px 0px 2px 2px;',
        :do_not_reply => 'color: #888; padding-top: 5px; border-top: 1px solid #D7D4C6;'
    }
}

然后像这样访问它:

# program_logo
style = style_hash[@program.email_theme][:program_logo]
# do_not_reply
style = style_hash[@program.email_theme][:do_not_reply]

I think you're looking for this:

style_hash = {
    :program_logo => {
        UserMailerHelper::EmailTemplateConstants::DEFAULT_WITH_BANNER => 'border: none;height:50px;float:left; margin-right: 10px; padding: 2px;',
        UserMailerHelper::EmailTemplateConstants::LOGO_AT_BOTTOM => 'border: none;height:80px; padding: 2px 0px 2px 2px;'
    },
    :do_not_reply => {
        UserMailerHelper::EmailTemplateConstants::DEFAULT_WITH_BANNER => 'color: #888; padding-top: 5px; display:block; text-align:center',
        UserMailerHelper::EmailTemplateConstants::LOGO_AT_BOTTOM => 'color: #888; padding-top: 5px; border-top: 1px solid #D7D4C6;'
    }
}

and then in program_logo:

style = style_hash[:program_logo][@program.email_theme]

and in do_not_reply:

style = style_hash[:do_not_reply][@program.email_theme]

Or perhaps it would make more sense to arrange your style_hash like this:

style_hash = {
    UserMailerHelper::EmailTemplateConstants::DEFAULT_WITH_BANNER => {
        :program_logo => 'border: none;height:50px;float:left; margin-right: 10px; padding: 2px;',
        :do_not_reply => 'color: #888; padding-top: 5px; display:block; text-align:center'
    },
    UserMailerHelper::EmailTemplateConstants::LOGO_AT_BOTTOM => {
        :program_logo => 'border: none;height:80px; padding: 2px 0px 2px 2px;',
        :do_not_reply => 'color: #888; padding-top: 5px; border-top: 1px solid #D7D4C6;'
    }
}

And then access it like this:

# program_logo
style = style_hash[@program.email_theme][:program_logo]
# do_not_reply
style = style_hash[@program.email_theme][:do_not_reply]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文