【发布时间】:2015-10-01 07:16:35
【问题描述】:
我正在尝试使用 Rails 4 和简单的表单和引导程序制作应用程序。我也在尝试使用 rails 本地化语言选择 gem 来解决这个问题。那次尝试失败了,然后我找到了语言列表宝石。我的下一次尝试是使用那颗宝石。
我很难理解简单的形式(很重要)。
我当前的问题是我希望我的显示页面呈现语言的名称,而不是它的值。例如,我想要在当前显示“en”的地方使用“English”。
在我的表格中,我有:
<div class="row">
<div class="col-md-3 col-md-offset-1">
<%= f.label 'What are your working languages?', :class => 'question-project' %>
</div>
<div class="col-md-7"><div class="response-project">
<%= f.input :languages, label: false do %>
<%= f.select :languages, options_for_select(Profile.language_list, @profile.languages), :input_html => {:style=> 'width: 50%', class: 'response-project'} %>
<% end %>
</div></div>
</div>
我在所有内容上都有 label: false 因为我似乎无法使用我的 CSS 制作简单的表单。相反,它将丑陋的粗体黑色字体强加在所有内容上。这可能是出问题的线索。
在我的个人资料模型中,我有:
def self.language_list
[['English', 'en'], ['French', 'fr'], ['German', 'de'], ['Spanish', 'spa']]
end
我的第二个问题是,我如何允许用户进行多项选择。如果他们说的是法语和英语,我希望他们点击。
有什么建议吗?
我尝试了以下建议:
在个人资料表格中:
<div class="row">
<div class="col-md-3 col-md-offset-1">
<%= f.label 'What are your working languages?', :class => 'question-project' %>
</div>
<div class="col-md-7"><div class="response-project">
<%= f.input :languages, as: :select, collection: I18n.available_locales.sort %>
</div></div>
</div>
在 simple_form.yml 中:
en:
simple_form:
"yes": 'Yes'
"no": 'No'
required:
text: 'required'
mark: ''
# You can uncomment the line below if you need to overwrite the whole required html.
# When using html, text and mark won't be used.
# html: '<abbr title="required">*</abbr>'
error_notification:
default_message: "Please review the problems below:"
# Labels and hints examples
# labels:
# defaults:
# password: 'Password'
# user:
# new:
# email: 'E-mail to sign in.'
# edit:
# email: 'E-mail.'
# hints:
# defaults:
# username: 'User name to sign in.'
# password: 'No special characters, please.'
options:
profile_setting:
languages:
en: English
de: German
th: Thai
ru: Russian
se: Swedish
it: Italian
es: Spanish
输出是选择菜单中的选项是:
development
en
production
test
我将 simple_form.yml 更改为:
options.profile.languages:
en: English
de: German
th: Thai
ru: Russian
se: Swedish
it: Italian
es: Spanish
我得到与其他简单形式 yml 排列相同的输出。
我的下一个尝试是使用 localised_language_select gem。我安装了它并尝试生成语言环境(尽管它给了我一个错误,说找不到生成器本地化_语言选择:本地化。这个 gem 的文档提供了一个如何使用它的示例,如下所示:
Usage example <%= localized_language_select(:user, :language, [], :include_blank => 'Please choose...') %>
所以我在我的个人资料表单中将其调整为以下内容:
<%= f.select localised_language_select(:languages), :include_blank => 'Please choose' %>
为了与示例保持一致,我也尝试了:
<%= f.select localised_language_select(:profile, :languages), :include_blank => 'Please choose' %>
在上述每种情况下,我都会收到此错误:
undefined method `localised_language_select' for #<#<Class:0x007faeea108f38>:0x007faeeb300d30>
我也试过了:
<%= f.localised_language_select :languages, :include_blank => 'Please choose' %>
我收到此错误:
undefined method `localised_language_select' for #<SimpleForm::FormBuilder:0x007faee35f5318>
我的下一个尝试是安装 language_list gem。
然后我将其设置在我的表单元素中:
<%= f.collection_select :languages, options_from_collection_for_select(LanguageList::COMMONLANGUAGES, "ISO_639_1", "name") %>
我收到此错误:
NameError at /profiles/2/edit
uninitialized constant LanguageList::COMMONLANGUAGES
【问题讨论】:
-
如果你想要一个多选,你不能用它作为一个选择......有道理,对吧?在您的 I18n 中,您需要将其命名为“options.profile.langauges”....
-
并且你需要输入你的密钥集合,用户可以选择。我的是语言环境,我很确定你不(!)想要那个
-
我要改变什么? simple_form.yml 文件?我用 options.profile.langauges 交换语言?不确定如何处理您的建议??
-
你的 yml 键错误....
-
知道如何解决它们吗?我从你的帖子中复制的。不知道在哪里可以找到这个参考