ruby-on-rails - Ruby on Rails 对象保存为空值

标签 ruby-on-rails ruby activerecord

群控:

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/

相关文章:

ruby-on-rails - 用数字按字母顺序对列进行排序

ruby-on-rails - 如何从子记录集合中获取曾祖 parent 记录集合?

ruby-on-rails - Rails 乘客/tmp/文件夹权限被拒绝

html - Ruby on Rails 随机代码插入静态页面,测试 RED

javascript - 无法从 $.get 获得响应

ruby - 解析字符串时使用 case 语句时避免/删除 nil

ruby-on-rails - 在 Controller 中执行操作的 Rails 3 链接或按钮

ruby - 为什么在切换 ruby​​ 版本时 rspec puppet 会因未定义的方法错误而失败?

ruby - 将带空格的字符串转换为 URL

ruby-on-rails - ActiveRecord 事务中的错误处理?