群控:
def show
@cat = Category.find_by_id(params[:id])
if @cat.group
@group = @cat.group
@members = @cat.group.group_members.all
@mem = @group.group_members.build
else
@cat.build_group
@cat.save
@mem = @cat.group.group_members.build
end
end
def add_member
@cat = Category.find_by_id(params[:id])
@group = @cat.group
@group.group_members.build(member_params)
if @group.save
redirect_to group_path
end
查看:
- if @members.length > 0
- @members.each do |member|
%ul
%li
= member.first_name
= simple_form_for @mem, url: member_add_path(@cat.id), html: {:id => 'step_two_form'} do |f|
= f.label "First name"
= f.input :first_name, label: false
= f.label "Last name"
= f.input :last_name, label: false
= f.label "Email"
= f.input :email, label: false
= f.label "Phone number"
= f.input :telephone, label: false
= f.button :button, "Add member"
当我提交此表单时,我可以看到创建了一个新对象,因为源中有一个新的 <li>
,但是该对象具有空白值,无论输入如何。
参数(在组 Controller 中):
def member_params
params.require(:group_member).permit(group_members_attributes: [:first_name, :last_name, :email, :telephone, :relationship, :status])
end
在终端中,我可以看到我输入的值正在传递,但由于某种原因没有被保存。这是终端输出:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"7odxnZzHoyjgF/oougDIVKNR/9RkZOlK3IOpCaUVvpQ=", "group_member"=>{"first_name"=>"name", "last_name"=>"name", "email"=>"name@name.com", "telephone"=>"1234567890"}, "button"=>"", "id"=>"22"}
感谢所有帮助,谢谢。
编辑:
group_member.rb:
class GroupMember < ActiveRecord::Base
belongs_to :group
attr_accessor :first_name, :last_name, :email, :telephone, :relationship
end
最佳答案
您的 member_params 方法不需要将 group_members_attributes
指定为嵌套哈希,您应该能够直接允许这些属性(无论您在 中放置什么,它们都将被允许要求(...)
部分:
def member_params
params.require(:group_member).permit(:first_name, :last_name, :email, :telephone, :relationship, :status)
end
关于ruby-on-rails - Ruby on Rails 对象保存为空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25061253/