1

我是 Rails 的新手。随意编辑问题标题。其中一些对您来说可能是显而易见的。(我希望!)

我有一个拍卖有很多很多(待售物品)。
我已经设置了拍卖,我可以添加/编辑/删除就好了。

我希望能够从 /auctions/1/lots/ 之类的 URL 的一页中查看/添加/删除很多,所以我设置了我的路线,如下所示:

resources :auctions, :except => :edit do
  resources :lots
end

我的模型如下所示:

class Auction < ActiveRecord::Base
  ...
  has_many :lots
end

class Lot < ActiveRecord::Base
  belongs_to :auction
  ...
end

我的lots_controller.rb 看起来像这样:

def index
  @auction = Auction.find(params[:auction_id])
  @lots = @auction.lots
end

我的很多/index.html.erb 文件:

<ul>
<% @lots.each do |lot| %>
  <li><%= lot.description %></li>
<% end %>
</ul>

这使得很多很好。
问题是当我尝试放置一个创建新批次的表格时。我不确定我需要把什么放在哪里。

<%= form_for(@auction.lots.build) do |f| %>
  <%= f.input :description %>
<% end %>

在查看页面时添加它会给我以下错误:
undefined method `lots_path' for #<#<Class:0x007fb77ea26308>:0x007fb77d43fd00>

我的印象@auction.lots.build是放在那里是正确的论点。

任何帮助,将不胜感激。谢谢。

4

1 回答 1

1

form_for正在尝试从新的 Lot 实体推断操作路径(并且失败)。您可以直接指定:url

<%= form_for(@auction.lots.build, url: auction_lots_path(@auction)) do |f| %>

或者,传递一个数组以向 form_for 指示此资源是嵌套的:

<%= form_for([@auction, @auction.lots.build]) do |f| %>
于 2013-02-13T16:00:37.023 回答