0

我有一个名为 Listings 的资源和一个名为 email 的资源

列表 has_many :emails email belongs_to :listing

我正在尝试将列表 ID 传递给 email.listing_id 但我不断收到此错误:

Couldn't find Listing without an ID ActiveRecord::RecordNotFound in EmailsController#create

这是我的代码:

class EmailsController < InheritedResources::Base
    def new
        @listing = Listing.find(params[:listing_id])
        @email = Email.new

    end

    def create
        @listing = Listing.find(params[:listing_id])
        @email = Email.new(params[:email])



    end

从我的列表显示页面我传递了listing.id

<%=link_to "Email Listing", new_email_path(:listing_id => @listing.id)

电子邮件_form

  <%= f.input :email %>
  <%= f.input :message %>
  <%= f.hidden_field :listing_id, :value => @listing.id %>
  %= f.button :submit, :value=> "Send Email" %>
4

3 回答 3

0

请查看此帖子以获得答案:

找不到没有 ID 的列表

问题是我的参数是这样的:

"email"=>{"email"=>"xyz@z.com",
 "message"=>"hello",
 "listing_id"=>"3"},
 "commit"=>"Send Email"}

只是改变

@listing = Listing.find(params[:listing_id])

@listing = Listing.find(params[:email][:listing_id])
于 2013-04-17T20:07:06.703 回答
0

我不明白你的@listing = Listing.find(params[@email.listing_id]),因为你已经有了你想要的@email变量ID,你可以避免再次使用参数,尝试类似: @listing = Listing.find(@email.listing_id)

于 2013-04-17T00:58:39.140 回答
-1

我很确定这是因为您为“新”操作创建了视图,并且在尝试进入页面时您没有任何参数,所以基本上您正在执行'Listing.find(nil)'

如果没有,请尝试打印 params 的值,并检查 listing_id 丢失的位置。

于 2013-04-16T23:33:37.047 回答