多态嵌套路由

时间:2015-12-07 03:34:13

标签: ruby-on-rails

这是第一次使用多态关联。我有一个属于用户模型和记分板模型的图片模型。图片模型的迁移如下所示。

class CreatePictures < ActiveRecord::Migration
  def change
    create_table :pictures do |t|
      t.string :picture
      t.references :imageable, index: true, polymorphic: true

      t.timestamps null: false
    end
    add_foreign_key :pictures, :imageables
  end

  add_index :pictures, :imageable_id
  # add index on the pictues table on the imageable_id column
end

belongs_to和has_one关联代码如下所示。

class Scoreboard < ActiveRecord::Base
  has_one :picture, as: :imageable
end

class User < ActiveRecord::Base
  has_one :picture, as: :imageable
end

class Picture < ActiveRecord::Base
  belongs_to :imageable, polymorphic: true
end

scoreboard_picture资源嵌套在scoreboards资源中。

resources :scoreboards do 
   resources :scoreboard_picture, only: [:create, :destroy, :new]
end

我有scoreboard_picture控制器,使用以下新方法。

class ScoreboardPictureController < ApplicationController

    def new
        @scoreboard = Scoreboard.find(params[:scoreboard_id])
        @picture = @scoreboard.build_picture
    end

New行动

 <%= form_for([@scoreboard, @picture], url: scoreboards_picture_path, html: {multipart: true}) do |f| %>
 <%= f.file_field :picture, accept: 'image/jpeg,image/gif,image/png', id: "files" %>
 <% end %>

之前我已经实现了嵌套路由,它没有给我任何问题。但是,我不断收到以下错误。

 undefined local variable or method `scoreboards_picture_path' for #<#<Class:0x007fa4c054f490>:0x00000007574700>

我认为它与多态关联有关。我尝试在表单中提供URL。它仍然无法正常工作。我在这个问题上阅读了一些其他帖子并尝试使用对他们有用的东西,仍然得到错误。我很确定我的新方法是正确的。我已经坚持了一段时间。任何帮助将不胜感激。

0 个答案:

没有答案