Ruby on rails ruby中的Create函数返回的是ActiveRecord::Relation对象,而不是实际记录
我正在创建两个对象,然后使用重定向功能将它们传递给视图。Ruby on rails ruby中的Create函数返回的是ActiveRecord::Relation对象,而不是实际记录,ruby-on-rails,ruby,create-react-app,Ruby On Rails,Ruby,Create React App,我正在创建两个对象,然后使用重定向功能将它们传递给视图。 Order对象在视图中很好用,但是Message对象的类型是ActiveRecord::Relation,任何对Message.variable的调用都会得到一个noMethodError。这是密码 控制器代码: @order = Order.create(order_params.merge( child: child, address: prevOrderInfo.address,
Order对象在视图中很好用,但是Message对象的类型是ActiveRecord::Relation,任何对Message.variable的调用都会得到一个noMethodError。这是密码 控制器代码:
@order = Order.create(order_params.merge(
child: child,
address: prevOrderInfo.address,
zipcode: prevOrderInfo.zipcode,
user_facing_id: SecureRandom.uuid[0..7]))
@message = Message.create(message_params.merge(:order_id => @order.id))
redirect_to order_path(@order, @message)
查看检验报告
#order object
--- '#<Order id: 8, user_facing_id: "d1791380", product_id: 1, child_id: 2, shipping_name:
"Marge Simpson", address: "742 Evergreen Terrace", zipcode: "58008", paid: true,
created_at: "2019-09-30 19:29:01", updated_at: "2019-09-30 19:29:01">'
#message object
--- '#<ActiveRecord::Relation [#<Message id: 6, full_name: "Homer ", email: "homer@gmial.com",
message: "This is a message", order_id: 8, created_at: "2019-09-30 19:29:01", updated_at:
"2019-09-30 19:29:01">]>'
#订单对象
--- '#'
#消息对象
--- '#'
erb使用@order就可以了。
把“玛姬·辛普森”放到网页上
但是@message的任何用法,如
获取全名的noMethodError
不确定我在做什么,但为什么订单表的create调用会返回一种类型,消息表返回另一种类型?
@Message
似乎是某种类型的集合。您应该能够调用
,或者可以对其进行迭代并执行以下操作:
<% @message.each do |msg| %>
<%= msg.full_name %>
<% end %>
或者,您可以更改代码以执行重定向,如下所示:
重定向到订单路径(@order,message\u id:@message.id)
在顺序显示操作中,您将有:
@order=order.find(参数[:id])
@message=message.find(参数[:message\u id])
使用这种方法,您的视图中将有一个@order
对象和一个@message
对象
我希望这会有所帮助。我会尝试一下,但我真正的问题是为什么create函数返回两种不同的类型?问题在于show方法。我使用message设置@message。其中。。。。非常感谢你!!没问题,随时都可以!!:)