如何从下拉列表中保存和显示所选值?

时间:2017-10-06 04:16:38

标签: ruby-on-rails ruby-on-rails-4

我的文章模型中有一个名为'title'的属性。

我可以将以下内容放在new.html.erb的表单中:

<p>
  <%= form.label :title %><br>
  <%= form.text_field :title %>
</p>

这会为用户生成一个输入框以输入标题。 在我的show.html.erb中,我可以用:

显示标题
<p>
  <strong>Title:</strong>
  <%= @article.title %>
</p>

下拉列表不一样吗? 我首先在我的文章模型中添加了一个属性并进行迁移:

rails generate migration add_dropdown_attribute_to_articles programlang:string

我可以将它放在我的new.html.erb表单中:

<p>
  <%= form.select :programlang, [['Ruby','ruby'],['Python','python']]%>
</p>

我想保存用户选择的两个选项中的一个并在show.html.erb中显示它:

<p>
  <strong>Language:</strong>
  <%= @article.programlang %>
</p>

我认为这会显示'Ruby'或'Python'作为用户选择,但这不起作用。 没有错误,但show.html.erb

中没有显示任何值

我只是想知道我是否真的需要为此工作做更多的事情。我想如果能得到的话 用户从框中输入并显示它,我可以使用下拉列表执行相同操作。

我一直试图找到一个解释这个问题的指南,但他们都希望用更复杂的行动来解决这个问题 下拉列表中的值。我试图让它尽可能简单。我是否需要将“Python”和“Ruby”添加到种子中?

2 个答案:

答案 0 :(得分:1)

试试这个,

<%= form.select :programlang, options_for_select([['Ruby', 'ruby'], ['Python', 'python']], (@article.programlang)), { include_blank: 'None'}, class: "" %>

在控制器中

def article_params 
  params.require(:article).permit(:title, :text, :description, :keyword, :syntax, :programlang) 
end

答案 1 :(得分:0)

我认为这是基本的,它会起作用

<%= form.select :programlang, options_for_select([['Ruby','ruby'],['Python','python']]) %>

或选择选项

<%= form.select :programlang, options_for_select(['Ruby','Python'], 'Ruby') %>