感谢您的阅读,我不知道如何编写选择框的Rails表单助手的方法参数。
假设我有以下类:
class School
attr_accessor :students
def initialize
students = []
end
end
class Student
attr_accessor :teacher
atrr_accessor :student_name
end
class Teacher
attr_accessor :teacher_name
end
@teacher_list = ['Smith', 'Jones', 'Brown','White']
我希望有一个选择框,显示每个学生都有哪位老师,并允许我选择不同的老师。我希望能够解析生成的params并发送到控制器,以防我需要更新它,但我也希望显示正确的值来选择。
我不知道如何编写方法参数,以便选择正确的值来显示为选中,我这样做:
<%= form_for :school, url: update_path do |f| %>
<% school.students.each do |student| %>
<% f.select("[students]#{student.student_name}[teacher][teacher_name]" options_for_select(@teacher_list),{prompt => 'Select Teacher for student'}) %>
<% end %>
这显然是错误的,但我希望能够以一种我可以轻松解析它的方式生成params哈希。
非常感谢你的帮助
答案 0 :(得分:0)
我刚刚做过这个。我为此创建了一个表,表是角色,模型是角色。
用户模型对很多角色都有很多不足之处。这意味着许多用户可以拥有不同的角色,每个角色可以拥有不同的用户,但一对多的关系(has_many :roles
)就足够了
has_and_belongs_to_many :roles
角色模型
has_and_belongs_to_many :users
我创建了一个额外的表roles_users来管理用户和角色之间的连接关系。
create_table(:roles_users) do |t|
t.belongs_to :role, index: true
t.belongs_to :user, index: true
end
这是表单,选择表单的值是使用Role.all.collect计算的。
<%= form_for @user |f| %>
<%= f.select(:roles_id, Role.all.collect {|p| [ p.role, p.id ]}, {:selected => @user.roles_id}, {:class => "form-control"}) %>
我就是这样做的,在接下来的几天里,我可能有时间来回顾这个问题并加以改进。我希望它对你有所帮助。 对不起,如果不是很好
由于
的Fabrizio