gpt4 book ai didi

ruby-on-rails - 如何在嵌套表单中包含一个 id?

转载 作者:行者123 更新时间:2023-12-02 00:28:57 28 4
gpt4 key购买 nike

我有一个嵌套表单,我想在商店模型中包含 city_id,这是 <%= s.hidden_field :city_id, @city.id %>正确的?如果是,那之后我要在 Controller 中添加什么?如果这不是包含它的正确方法,有人可以告诉我正确的方法吗?非常感谢。

<%= form_for @deal ,:url=>{:action =>"create"} do |c|%>
<%= c.text_field :item_name %>
<%= c.text_field :price %>

<%=c.fields_for :stores do |s| %>
<%=s.text_field :store_name %>
<%= s.hidden_field :city_id, @city.id %>
<%=s.text_field :address %>
<%end%>

<%= c.submit "post"%>
<%end%>

控制者

def create
@city = City.find(session[:city_id])
@deal=@city.deals.build(params[:deal])

if @deal.save
redirect_to @deal
flash[:notice]="successfully created"
else
render 'new'
end
end

模型

class City < ActiveRecord::Base
has_many :stores
has_many :deals
end

class Deal < ActiveRecord::Base
belongs_to :city
has_many :stores ,:through =>:store_deals
has_many :store_deals
end

class StoreDeal < ActiveRecord::Base
belongs_to :store
belongs_to :deal
end

错误

NoMethodError in Deal#new

Showing /home/Deals/app/views/deal/new.html.erb where line #13 raised:

undefined method `merge' for 2:Fixnum
Extracted source (around line #13):

10: <tr><td><label>Price</label></td><td><%= c.text_field :price %></td></tr>
11: <%=c.fields_for :stores do |s| %>
12: <tr><td><label>Store</label></td><td><%=s.text_field :store_name %></td></tr>
13: <%= s.hidden_field :city_id, @city.id %>
14: <tr><td><label>Cross street</label></td><td><%=s.text_field :address %></td></tr>
15: <%end%>
16: <tr><td><%= c.submit "post"%></td></tr>

最佳答案

好的,现在我已经更仔细地查看了您的代码并发现问题所在。 hidden_​​field 帮助器没有将 value 作为其参数之一。使用:

<%= s.hidden_field :city_id, :value => @city.id %>

但是,出于 Michael Durrant 指出的原因,最好在您的 Controller 中处理它。

关于ruby-on-rails - 如何在嵌套表单中包含一个 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7762510/

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