ruby-on-rails - 在嵌套资源中创建新项目的问题

标签 ruby-on-rails ruby ruby-on-rails-3

我有如下嵌套资源:

雇主.rb

class Employer < ActiveRecord::Base

    has_many :listings

end

列表.rb

class Listing < ActiveRecord::Base

    belongs_to :employer

end

我使用基本的脚手架生成器构建了两者。

除了我为雇主创建新列表时,一切似乎都正常。路线是

new_employer_listing GET
/company/:employer_id/listings/new(.:format)
{:action=>"new", :controller=>"listings"}

当我导航到新的列表 url (company/employer_id/listings/new)

我得到:

NoMethodError in ListingsController#new
undefined method `listing' for #<Employer:0x102dd5e48>

这是#new 的listings_controller 代码

  def new
    @employer = Employer.find_by_username(params[:employer_id])
    @listing = @employer.listing.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @listing }
    end
  end

同样,其他一切正常(显示、编辑等)——我只是无法获得新的列表页面...任何帮助都将非常棒。

谢谢!

//在下面编辑

  def create
    @employer = Employer.find_by_username(params[:employer_id])
    @listing = @employer.listings.new(params[:listing])

    respond_to do |format|
      if @listing.save
        format.html { redirect_to(@listing, :notice => 'Listing was successfully created.') }
        format.xml  { render :xml => @listing, :status => :created, :location => @listing }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @listing.errors, :status => :unprocessable_entity }
      end
    end
  end

错误:

No route matches {:action=>"show", :controller=>"listings", :id=>#<Listing id: 20, job_title: "asd", location: nil, status: nil, industry: nil, years: nil, degree_type: nil, degree_field: nil, employer_id: 1, employers_id: nil, user_id: nil>}

最佳答案

在 Employer 模型中,您添加了 has_many :listings 关联。但是在您的 Controller 中,您调用了 @employer.Listing.new。这里不匹配的是Listing和listings。

你应该这样做:

@listing = @employer.listings.new(params[:listing)

旁注:

不要忘记在@listing 上调用save,否则它不会被保存。

我更喜欢使用 build 而不是 new,这样列表就可以直接在雇主协会中获得。这两种方法都有效,但取决于您如何使用它们。

关于ruby-on-rails - 在嵌套资源中创建新项目的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6784785/

相关文章:

ruby-on-rails - 访问我的 AWS S3 帐户的存储桶时出现问题

ruby-on-rails - 像 "has_one"这样的 Rails 方法调用是如何工作的?

css - 如何将 ttf 自定义字体包含到我的 Rails 应用程序中?

ruby-on-rails - Ruby on Rails - 在 URL 中隐藏 user_id

ruby-on-rails - Ruby 的自动代码质量工具?

ruby - 通过 Ruby 脚本流式传输数据并在 ARGV 中使用参数

ruby - 除了 ruby​​ on rails 之外,您可以将 ruby​​ 用于网页吗?

javascript - 如何使用嵌入式 ruby​​ 动态创建 jquery 选择器(在 .js.erb 文件中)?

ruby-on-rails - 只允许登录/当前用户编辑自己的帖子

ruby-on-rails-3 - 如何使用 RSpec 模拟有错误的模型