중첩 된 양식이 있는데 상점 모델에 city_id를 포함 시키려면이 <%= s.hidden_field :city_id, @city.id %>
이 맞습니까? 그렇다면 컨트롤러에 컨트롤러를 추가하려면 어떻게해야합니까? 그것을 포함하는 올바른 방법이 아니라면 누구든지 제게 올바른 방법을 보여줄 수 있습니까? 감사합니다.중첩 된 양식에 ID를 포함시키는 방법은 무엇입니까?
<%= 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])
@[email protected](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>
,
문제가 무엇인지 설명해야합니다. 오류가 있습니까? 예상치 못한 동작입니까? 방망이를 잘못 말할 수는 없지만 충분한 코드 예제를 제공하지 않았습니다. 관련 모델뿐만 아니라 해당 양식이 호출되는 컨트롤러 작업이 도움이됩니다. – bricker
@bricker 모델을 추가했습니다. 정의되지 않은 'merge'메소드가 2 개 있습니다. Fixnum ..... 다른 정보를 알려주세요. 감사합니다. – katie
bricker의 질문에 감사드립니다. 일반적으로 레일스 양식에서 숨겨진 필드를 사용하고있는 자신을 발견하면 사용법을 피하기 위해 '레일 방식'과 같이 다르게 수행해야하는 사항을 나타냅니다. 이것이 당신이 달성하고자하는 것에 대한 더 많은 정보가 도움이 될 수있는 이유입니다. :) –