Rails的控制器设置通过关系有很多

时间:2013-02-13 23:57:11

标签: ruby-on-rails controller has-many-through

我对this example提出了类似的问题。我是一个新手,已经阅读了几个小时如何得到这个答案,但还没有得到答案,非常感谢你的帮助!我按照Kikito的回答设置了以下模型:用户,照片,地点,Photo_Relationships。我的路线文件包含:

resources :users 
resources :locations do
  resources :photos
end
resources :photo_relationships

我可以将照片保存到我的应用程序中的正确位置,但我无法通过Photo_Relationships模型将多个用户(特别是照片的创建者)分配给照片。

class CreatePhotoRelationshipsTable < ActiveRecord::Migration
  def change
    create_table :photo_relationships do |t|
        t.integer :photo_id
        t.integer :user_id
        t.integer :role_id

        t.timestamps
    end

照片控制器

  def create
    @location = Location.find(params[:location_id])
    @photo = @location.photos.new(params[:photo])
    @photo.create_photo_relationship(@photo, current_user, 0)
    if @photo.save
        flash[:notice] = "Successfully added your photo"
        redirect_to [@mountain, @photo]
    else
        render :action => 'new'
    end
  end

Photo_Relationships Controller

def create
  @relationship = photo_relationships.new(params[:photo][:location])
  @photo.create_photo_relationship()
end

我当前的错误是未定义的方法`photo_relationship'。无论有什么帮助或指导,我都非常感激。

1 个答案:

答案 0 :(得分:0)

班级名称为PhotoRelationship而不是photo_relationships

您的控制器行应为:

@relationship = PhotoRelationship.new(params[:photo][:mountain])