【问题标题】:has_one existing data in form railshas_one 表单中的现有数据
【发布时间】:2016-03-08 08:01:59
【问题描述】:

我有两门课

class Movie < ActiveRecord::Base
  has_one :rating

end

class Rating < ActiveRecord::Base

end

我已经在评级表中填充了数据。

当我创建电影时,如何将评级表中的数据填充为选择字段?并且在电影保存后创建关联?

这是可能的吗?

任何帮助将不胜感激

【问题讨论】:

  • 您要在选择中填充的评级表的字段是什么?
  • 嗨@Pavan,在这种情况下,名称类似于 R、PG...等
  • 创建新电影时要选择评分表的数据吗?
  • @kajal 我想选择保存在数据库中的评分

标签: ruby-on-rails ruby forms associations


【解决方案1】:

你可以像这样使用它:

<%= f.select(:rating, Rating.all.collect {|u| [u.name]}, :prompt => 'Select')  %>

【讨论】:

    【解决方案2】:

    在你的 Rating 模型中,取一个常数,如果你有 has_many,你应该在 rating 中有一个 belongs_to

    class Rating < ActiveRecord::Base
      Ratings = Rating.all.pluck(:id,:name)
    end
    

    在您的电影表单中,

    <%= f.select :rating, Rating::Ratings.map{|rating| [ rating[1], rating[0] ]} %>
    

    如果没有评分,则取要保存电影评分的字段名称

    【讨论】:

      【解决方案3】:

      您应该在 Rating 上添加 belongs_to 关联。

      然后以你的形式:

      <%= 
        f.select(:rating_id, Rating.all.map {|u| [u.name, u.id]}, :prompt => 'Select')  %>
      

      更新: belongs_to 是指定外键的关联方。因此,从您的示例中,我发现 Movie 可以被评为 0 次或更多次。 Rating 始终是一个 Movie

      所以你的模型应该是:

      class Movie < ActiveRecord::Base has_many :ratings end class Rating < ActiveRecord::Base belongs_to :movie end

      【讨论】:

      • 保存电影时出现以下错误Rating(#70108240012820) expected, got String(#70108173494120)
      • 如果我这样做,电影表不应该有 rating_id 吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      相关资源
      最近更新 更多