gpt4 book ai didi

ruby-on-rails - 传递参数以更新嵌套属性

转载 作者:行者123 更新时间:2023-12-04 06:18:01 24 4
gpt4 key购买 nike

我正在开发一个非常基本的练习应用程序,用户可以在其中创建多个引用。我遇到的问题是我无法更新我的报价单。我有很多东西并且已经阅读了这里和谷歌上的其他问题,但无法弄清楚我做错了什么。这是我的代码:

#User Model
class User < ActiveRecord::Base
has_many :quotations, :dependent => :destroy
attr_accessible :quotations
accepts_nested_attributes_for :quotations, :allow_destroy => true
end

#Quotations Model
class Quotation < ActiveRecord::Base
attr_accessible :quote_text, :author, :quote_type, :category, :tags, :user_id
belongs_to :user
end

报价 Controller

class QuotationsController < ApplicationController
before_filter :get_user

def get_user
@user = User.find(params[:user_id])
end

def edit
@quotation = @user.quotations.find(params[:id])
end

def update
@quotation = @user.quotations.find(params[:id])
if @quotation.update_attributes(params[:id])
redirect_to user_quotation_path :notice => "Successfully updated quotation."
else
render :action => 'edit'
end
end

end

最佳答案

您将错误的参数散列传递到 update_attributes 调用中。应该是

if @quotation.update_attributes(params[:quotation])

澄清一下,传递 :id:quotation 并没有做任何特别的事情。 Symbols in Ruby are just immutable string .所以使用 :id:quotation 等同于传递字符串“id”或“quotation”。 params[] 是您页面发布的所有表单参数的 HashMap 。

在 params 散列中,有一个您传递的类型的键(在本例中为 quotation),它的值是另一个散列,其中包含与您的引用相关的所有已发布字段查看这些字段的值。

params hash 中的 ID、controller 和 action 值来自 url 的路由值。

例如

params[] = 
{
:controller => 'quotations',
:action => 'edit',
:id => '1',
:quotation =>
{
:quote_text=> "Blah",
:author=> "Steve",
:quote_type=> "1",
:user_id=> "6"
}
}

关于ruby-on-rails - 传递参数以更新嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8058835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com