2015-03-07 2 views
1

Так что я просто вложил несколько ресурсов, которые не были вложены до и после того, как я пытался исправить все ссылки на пути. Самая большая проблема, я был с это с тем, что есть 2 вложенные ресурсы в большем вложенном ресурсе, как так:simple_form undefined method model_name 3 classes error

Users-> фотографии-> Комментарии

На моей форме, он держит дает мне следующую ошибку

неопределенный метод `MODEL_NAME» для "/ пользователей/2/фотографии/2/комментарии/новые": String

Страница ошибки говорит о том, что источник находится вокруг линии # 1 следующего (мои комментарии/_form частичное):

= simple_form_for ([@comment, new_user_photo_comment_path(@user,@photos,@comment)]) do |f| 
    = f.input :content, label: "Reply to thread" 
    =f.button :submit, class: "button" 

Это мой Комментарии контроллер:

class CommentsController < ApplicationController 
    before_action :authenticate_user! 
    def new 
    @photo=Photo.find(params[:photo_id]) 
    end 
    def create 
    @photo =Photo.find(params[:photo_id]) 
    @comment=Comment.create(params[:comment].permit(:content, :id, :photo_id)) 
    @comment.user_id= current_user.id 
    @comment.photo_id= @photo.id 
    @user= User.find_by(params[:id]) 

    if @comment.save 
     redirect_to user_photo_path(@photo, @user) 
    else 
     render 'comments/new' 
    end 
    end 
end 

ответ

0

Во-первых, не желательно для гнездования ресурсов глубже, чем в два раза. Вы должны рассмотреть возможность вставить комментарии только в фотографии. It`s нормально делать, как это в routes.rb:

resources :users do 
    resources :photos 
end 

resources :photos do 
    resources :comments 
end 

И ошибки, потому что = simple_form_for ([@comment, new_user_photo_comment_path(@user,@photos,@comment)]) do |f| дает для метода simple_form_for в качестве параметров:
1 - модель Комментарий
2 - Строка /users/2/photos/2/comments/new

Для установки правильного пути (формы действия) разработчикам форм нужны модели как все аргументы. Возможно, что-то вроде = simple_form_for ([@user,@photos,@comment]) do |f| должно работать

 Смежные вопросы

  • Нет связанных вопросов^_^