使用accepts_nested_attributes_for打开未允许的参数

 广交天下友V笑 发布于 2023-02-12 06:47

所以我对Rails相当新,所以我可能会错过一些非常直接的东西..

我要做的是在创建Artist时创建一个Band.

楷模

band.rb

class Band < ActiveRecord::Base

  has_many :artists, dependent: :destroy

  accepts_nested_attributes_for :artists, allow_destroy: true

  ...

end

artist.rb

class Artist < ActiveRecord::Base

  belongs_to :band

  ...

end

控制器 band_controller.rb

class BandController < ApplicationController

  def new
    @band = Band.new
  end

  def create

    @band = Band.new(band_params)
    if @band.save
      ...
    else
      ...
    end

  end

  private

    def band_params
      params.require(:band).permit(:name, :hometown, :email, :artist, artist_attributes: [ :band_id, :first_name, :last_name, :email, :password, :password_confirmation ])
    end

end

视图

new.html.erb

<%= form_for(@band, url: "/artist/signup") do |f| %>

    <%= render 'shared/error_messages', object: f.object %>

    <%= f.fields_for :artist do |artist| %>
        <%= artist.text_field :first_name, :placeholder => "First Name", :maxlength => 100 %>
        <%= artist.text_field :last_name, :placeholder => "Last Name", :maxlength => 100 %>

        <%= artist.email_field :email, :placeholder => "Email Address", :maxlength => 255 %>
        <%= artist.password_field :password, :placeholder => "Password", :maxlength => 255 %>
        <%= artist.password_field :password_confirmation, :placeholder => "Confirm Password", :maxlength => 255 %>
    <% end %>

    <%= f.text_field :name, :placeholder => "Band Name", :maxlength => 100 %>
    <%= f.text_field :hometown, :placeholder => "Hometown", :maxlength => 100 %>
    <%= f.text_field :email, :placeholder => "Band Email", :maxlength => 100 %>
    <%= f.submit "Apply", class: "button" %>

<% end %>

我的开发日志正在写出来:

  Parameters: {"utf8"=>"?", "authenticity_token"=>"...", "band"=>{"artist"=>{"first_name"=>"", "last_name"=>"", "email"=>"", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "name"=>"", "hometown"=>"", "email"=>""}, "commit"=>"Apply"}
-----
Unpermitted parameters: artist
{"name"=>"", "hometown"=>"", "email"=>""}
-----

现在,我认为我不需要允许艺术家,因为它是一个哈希..即使我允许它,它也不会改变..任何想法?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有