加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 尝试在Rails中保存嵌套属性时的ActiveRecord :

发布时间:2020-12-17 03:44:50 所属栏目:百科 来源:网络整理
导读:我阅读了很多关于`has_one关系和嵌套属性的页面,但是没有成功地完成这项工作.任何帮助都会很棒. 每个用户都有_one网络.我正在尝试以一种形式收集两个属性的信息,但在UsersController中创建异常ActiveRecord :: AssociationTypeMismatch #create 传递的参数是
我阅读了很多关于`has_one关系和嵌套属性的页面,但是没有成功地完成这项工作.任何帮助都会很棒.

每个用户都有_one网络.我正在尝试以一种形式收集两个属性的信息,但在UsersController中创建异常ActiveRecord :: AssociationTypeMismatch #create

传递的参数是:

{"utf8"=>"a?“","authenticity_token"=>"I54tm1ovzHEHaXbBLTT+5tqBJv2795sKg978ot3HDBc=","user"=>{"name"=>"Bilbo Baggins","email"=>"bilbo@lotr.com","password"=>"[FILTERED]","password_confirmation"=>"[FILTERED]","network"=>{"home_lng"=>"-87.91894912719727","home_lat"=>"43.03812464542969","center_lng"=>"-87.91894912719727","center_lat"=>"43.03812464542969","radius"=>"500"}},"commit"=>"Sign up"}

我猜测网络的参数必须以某种方式显示为network_attributes,但我不知道如何.

控制器:

def create
    @user = User.new(params[:user])
    if (@user.save)
      sign_in @user
      flash[:success] = "One ring to rule them all!"
      redirect_to @user
    else
      @title = "The journey begins..."
      render 'new'
    end
end

视图:

<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.text_field :email %><br />
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation,"Confirmation" %>
<%= f.password_field :password_confirmation %>
  <%= f.fields_for @network do |fn| %>
    <%= fn.hidden_field :home_lng %>
    <%= fn.hidden_field :home_lat %>
    <%= fn.hidden_field :center_lng %>
    <%= fn.hidden_field :center_lat %>
    <%= fn.hidden_field :radius %>
  <% end %>

当然还有模特:

class User < ActiveRecord::Base
  attr_accessor :password
  attr_accessible :name,:email,:password,:password_confirmation,:network_attributes,:network
  has_one  :network,:foreign_key => "user_id",:dependent => :destroy

  accepts_nested_attributes_for :network,:reject_if => :all_blank,:allow_destroy => true
end

class Network < ActiveRecord::Base
  attr_accessible :home_lng,:home_lat,:center_lng,:center_lat,:radius
  belongs_to :user
end

谢谢

解决方法

如果其他人遇到同样的问题,我通过更改解决了这个问题:

<%= f.fields_for @network do | fn | %GT;到<%= f.fields_for:network do | fn | %GT;并删除:network作为用户模型的可访问属性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读