我有一个rails表单我正在为param使用select标签:contrat
这是我的代码
<%= f.label :contrat, "Type de contrat", class: "jobs-newtitles-two-half" %><br>
<%= f.select(:contrat, [["CDI", 1], ["CDD", 2], ["Contrat de Travail Temporaire ou d’intérim", 3], ["Freelance", 4], ["Stage", 5]], {}, {class: "form-control form-two-half"}) %>
当我在选择列表中选择CDI作为contrat并提交表单并转到显示页面时我有1而不是CDI为什么会这样
这是我的展示页
Type de contrat: <%= @job.contrat %>
但不是获得Type de contrat:CDI我得到Type de contrat:1
答案 0 :(得分:1)
您的代码:
<%= f.select(:contrat, [["CDI", 1], ["CDD", 2], ["Contrat de Travail Temporaire ou d’intérim", 3], ["Freelance", 4], ["Stage", 5]], {}, {class: "form-control form-two-half"}) %>
它会将1
保存到数据库而不是"CDI"
,因此在您的展示页面上您有1
。
如果您希望在展示页面上显示“CDI”,可以通过多种方式进行操作。
将其添加到您的模型中
class Job < ActiveRecord::Base
def contrat_string
## if string data type of contrat, you should quote e.g if contrat == "1"
if contrat == 1
"CDI"
elsif contrat == 2
"CDD"
elsif contrat == 3
"Contrat de Travail Temporaire ou d’intérim"
elsif contrat == 4
"Freelance"
else
"Stage"
end
end
end
并在展会页面
Type de contrat: <%= @job.contrat_string %>
将方法添加到助手
module ApplicationHelper
def contrat_to_s(contrat)
## if string data type of contrat, you should quote e.g if contrat == "1"
if contrat == 1
"CDI"
elsif contrat == 2
"CDD"
elsif contrat == 3
"Contrat de Travail Temporaire ou d’intérim"
elsif contrat == 4
"Freelance"
else
"Stage"
end
end
end
并在展会页面
Type de contrat: <%= contrat_to_s(@job.contrat) %>
您可以将数组的定义放在/config/locales/your_language.yml
如果您使用英语en.yml
en:
contrat_strings:
1: CDI
2: CDD
3: Contrat de Travail Temporaire ou d’intérim
4: Freelance
5: Stage
在你的助手上,例如application_helper.rb
module ApplicationHelper
def contrat_selects
I18n.t(:contrat_strings).map { |key, value| [ value, key ] }
end
def contrat_views(value)
I18n.t(:contrat_strings)[value]
end
end
在显示页面
Type de contrat: <%= contrat_views(@job.contrat) %>
表格
<%= f.select :contrat, contrat_selects %>
注意:我已经测试过了。一切都适合我。
答案 1 :(得分:0)
这应该有效:
<%= f.select :contrat,
options_for_select([["CDI", 1], ["CDD", 2], ["Contrat de Travail Temporaire ou d’intérim", 3], ["Freelance", 4], ["Stage", 5]]], params[:contrat]),
{}, { :class => 'form-control form-two-half' } %>