【问题标题】:Collection_select how to get the selected value and save in RailsCollection_select 如何获取选中的值并保存在Rails中
【发布时间】:2013-09-06 11:07:43
【问题描述】:

我需要一些帮助。我在 rails4.0.0 做一个小功能。我有名为 user 的模型和另一个模型团队,并且我有另一个模型 Assign 。现在在分配模型中,我有两个选择框,我可以使用

从两个模型中获取用户名和团队名称
<%=  collection_select(:team, :team_id , Team.all, :id, :name, options ={:prompt => "-Select a user"}) %>

现在我需要在提交表单时从此选择框中获取选定的值并存储在分配表中.. 我不知道如何从控制器中获取这个选定的值??

class User < ActiveRecord::Base
    belongs_to :team
end


class Team < ActiveRecord::Base
  validates :name, :presence => true, :uniqueness => true
   has_many :users
end


class Assign < ActiveRecord::Base
   belongs_to :team
   belongs_to :user
end

【问题讨论】:

  • 请发布您的模型和负责您的视图的控制器方法之间的关系。
  • 查看上面的编辑代码..
  • 仍然缺少控制器方法。
  • 完整代码在这里:github.com/fossbalaji/Hrmanagement

标签: ruby-on-rails sqlite


【解决方案1】:

您的对象名称是 :assign,而不是 :team。

collection_select(:assign, :team_id , Team.all, :id, :name, options ={:prompt => "-Select a user"})

这应该为这些框创建正确的名称,因此它们将成为 params[:assign] 的一部分。如果你使用form_for @assign do |f|,那就更好了:

f.collection_select(:team_id , Team.all, :id, :name, options ={:prompt => "-Select a user"})

因为这应该会自动选择正确的选项。

【讨论】:

  • 所选值将作为 params[:assign][:team_id] 提供。查看您的控制器后,您需要在 assign_params 方法中将其添加到您的 permit 调用中,否则它将被忽略。上述更改也是必需的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
  • 2021-09-04
  • 1970-01-01
  • 2010-11-04
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多