【问题标题】:Rails Form dropdown select, save to table and display in viewRails Form下拉选择,保存到表格并在视图中显示
【发布时间】:2016-08-31 22:00:27
【问题描述】:

我创建了一个用户和程序表,以及一个连接表。每个用户 has_and_belongs_to_many :programs 并且每个程序 has_and_belongs_to_many :user。

使用下拉选择,我想选择一个程序并将其保存给用户。但是在我保存之后,显示屏总是显示文本“程序”而不是从下拉列表中选择的实际程序名称。

下拉选择表单:

<%= f.collection_select(:program_ids, Program.all, :id, :name, :include_blank => "Choose a Program" ) %>

显示用户所属的程序:

<% @user.programs.each do |program| %>
  <%= program.name %> 
<% end %>

我不确定我是否正确地将程序保存给用户,或者我是否显示错误的变量。我遵循了how to have a dropdown select field in a rails form 的想法。

任何建议都会有所帮助,谢谢!

【问题讨论】:

  • 你可以试试这个吗:&lt;%= f.select :program_id, Program.all.map {|c| [c.name, c.id] }, {prompt:"Choose a Program"} %&gt;
  • @7urkm3n 我尝试了您发布的代码,得到了相同的结果。它只是列为“程序”而不是实际的程序名称,例如“数学”。
  • 您到底想如何保存ids,多个或一个程序ID?因为你的数据库关系多对多。如果我没有错,则需要将其保存为数组,而不仅仅是整数。

标签: ruby-on-rails forms drop-down-menu collection-select


【解决方案1】:

我能够找到解决问题的方法。下拉选择表单和查看代码保持不变。它现在显示与用户关联的程序,而不是显示文本“程序”。

在program.rb中添加serialize

class Program < ActiveRecord::Base
  has_and_belongs_to_many :users
  serialize :program
end

【讨论】:

    猜你喜欢
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多