红宝石在轨道上 5,国旗



首先,我想为我的不专业道歉。 我还在学习 RoR 的过程中。

我目前正在尝试练习建立一个半高级网站,这是一大步,但我取得了很大的进展。

我目前正面临一个问题,我花了几天时间试图解决。 我确定这是我忽略的一件小事,但我正在用头撞墙试图弄清楚。

我似乎找不到任何视频、谷歌搜索或 SO 线程很好地谈论它。

--国旗 --

我正在使用country_select和国家宝石。 根据国家宝石的页面,https://github.com/hexorx/countries,它确实可以显示国旗表情符号。它没有维基,但在"首页"上,唯一的信息是:

c = Country['MY']
c.emoji_flag # => "🇺🇸"

我发现了很少的关于显示国旗表情符号的SO文章。 轨道 5 - 国家宝石 - 旗帜我已经多次阅读了这篇文章,并试图做出自己的判断,基本上遇到了与该家伙完全相同的问题。我得到同样的错误。

当我测试运行它时,一件小事不起作用,那就是:

irb(main):001:0> require "countries/global"
=> true

我的测试,确实返回为:

irb(main):001:0> require "countries/global"
=> false

即使我的宝石文件有:

gem 'countries', :require => 'countries/global'

这篇文章,Rails 5 - 带有动态国家输入的旗帜图标,不是针对国家宝石,而是针对另一个宝石。那里也没有答案。

在放弃通过国家宝石和有限的信息/指南显示我的国旗表情符号之后,我找到了这篇文章:将国旗合并到 Rails 4 应用程序中有哪些选择? 只有1个答案。

这导致我在 https://www.flag-sprites.com/上下载zip文件,解压缩它并将图像移动到我的资产管道/图像中,将css文件移动到资产管道/样式表中。

我当然已经链接了它们,预编译了它们等。

然后,我尝试测试运行代码以通过精灵显示其中一个图像,使用:

<span class="flag flag-us"></span>

完美地显示所选图像(美国国旗)... 但!我真正需要这些国家/地区标志的是用户登录后的用户个人资料。

我的用户已经必须通过注册选择一个国家/地区,例如美国 (US)。它也保存在数据库中,没有问题。

我只想根据用户注册时选择的国家/地区将用户的国家/地区的国旗添加到他们的个人资料页面中。

我目前使用:

<ul>
<li><span><p>Username:</p></span> <%= current_user.username %></li>
<li><span><p>Country:</p></span> <span><%= current_user.country_name %></span></li>
<br>
<li><p>Bio:</p><p class="bio"><%= current_user.bio %></p></li>
</ul>

以显示基于用户的信息。 用户名标签有效,它显示他们在注册期间选择的用户用户名。 该国工作,全名fx:美利坚合众国,而不是美国。 生物也有效。用户可以通过编辑页面对其进行编辑,它会完美地更改。

但是现在我需要知道,如何根据用户在注册期间选择的国家/地区使我的语法获取适当的标志。

我真的希望我能在这里得到一些帮助。 任何帮助都会得到很多赞赏。 提前谢谢。

也为墙的长篇道歉,只是想尝试展示我所做的一些研究。 我确定我在这里遗漏了一些东西,但关于这方面的信息很少。

哗啦啦!使用 Windows 8.1、Ruby on Rails 5。

我可能会做这样的事情:

<ul>
<li><span><p>Username:</p></span> <%= current_user.username %></li>
<li>
<span><p>Country:</p></span>
<span class="flag flag-<%= current_user.country_code %>"></span>
<span><%= current_user.country_name %></span>
</li>
<br>
<li><p>Bio:</p><p class="bio"><%= current_user.bio %></p></li>
</ul>

您需要向User类添加一个方法,该方法将country_name映射到标志精灵支持的country_code值之一。 例:

class User < ApplicationRecord
def country_code
{
"Czech Republic" => 'cz',
"United States of America" => 'us'
...
}[self.country_name]
end
end

--新尝试--

感谢您的快速回复,@SeanHuber。 我一直在尝试一些关于您的建议的事情,但我仍然遇到了一些问题。 它似乎不接受它作为链接:

<span class="flag flag-<%= current_user.country_code %>"></span>

它看起来是黄色的,我不确定这是否重要。 你可以在这里看到它

将其添加到我的视图文件后:

<span><p>Country:</p></span> 
<span><%= current_user.country_name %></span> 
<span class="flag flag-<%= current_user.country_code %>"></span>

这对我的用户模型:

def country_code
{
"Andorra" => 'ad',
"Czech Republic" => 'cz',
"Denmark" => 'dk',
"United States of America" => 'us'
}[self.country_name]
end

我在显示安道尔国旗的页面上收到有趣的错误。 安道尔 标志示例 令我怀疑的是,安道尔确实在国家代码列表中名列前茅,以"广告"开头,可以在以下位置看到:modemsite.com 它似乎正在注册到精灵图像,但它不接受/选择国家/地区代码,只是取顶部的代码。

还补充一点,在我的用户模型中,我有这个:

def country_name
country = self.country
ISO3166::Country[country]
end

默认情况下,country_select仅在用户配置文件上显示国家/地区代码(如"US"),添加方法country_name,允许它显示"美国",而不仅仅是代码"US"。 我认为这可能是重要的信息。

我不得不把这个回复写成"答案",因为评论部分只允许 300 个字符,而且由于我的声誉,我无法向我的原始帖子添加更多链接。

让我们使用with_data_attrs选项,我使用来自 https://github.com/lipis/flag-icon-css 的标志图标

config/initializers/country_select.rb

CountrySelect::FORMATS[:with_data_attrs] = lambda do |country|
[
country.name,
country.alpha2,
{
'data-country-code' => country.country_code,
'data-alpha3' => country.alpha3,
'data-icon' => "flag-icon flag-icon-#{country.alpha2.downcase}"
}
]
end

我使用simple_form宝石作为形式,这就是我的设置

= f.country_select :full_name, { format: :with_data_attrs }, { class: 'form-control select2 selectpicker', 'data-live-search': 'true' }

大功告成!:)

相关内容

  • 没有找到相关文章

最新更新