2016-05-09 6 views
0

Если я нажму ссылку на редактирование, ссылка будет работать и приведет меня к форме редактирования для конкретной галереи, которую я хотел бы отредактировать. Если для одного контроллера я получаю следующее сообщение об ошибке я нажимаю на ссылку на новый:Почему моя Редактирующая форма будет доступна для просмотра, но не моя новая форма того же контроллера?

NoMethodError at /users/2/galleries/new 
undefined method `galleries_path' for #<#<Class:0x007f4714fbac68>:0x000000060f32e0> 
Did you mean? gallery_path 

Я сделал обширный поиск для решения этой проблемы, но я не уверен, что я делаю неправильно. Это работало нормально, пока я не обновил маршруты, чтобы галереи имели вложенный ресурс пользователю. Я был в процессе обновления/исправления моих ссылок и форм, когда я не мог понять, как преодолеть эту проблему.

Ниже приведены мои маршруты, галереи/_form, галереи/правки, галереи/_new, части контроллера галереи.

routes.rb  
resources :users, shallow: true do 
     resources :galleries 
     resources :images 
     resources :albums 
    end 

galleries.html.erb 
<h1>New Gallery</h1> 

<%= render 'form' %> 

<%= link_to 'Dashboard', user_path(current_user) %> 

galleries/edit.html.erb 
<h1>Update Gallery</h1> 

<%= render 'form' %> 

<%= link_to 'Dashboard', user_path(current_user) %> 

galleries_controller.rb 
def new 
     @gallery = current_user.galleries.new 
    end 

    def create 
     @gallery = current_user.galleries.build(gallery_params) 
     respond_to do |format| 
       if @gallery.save 
        format.html { redirect_to @gallery, notice: 'Gallery was successfully created.' } 
        format.json { render :show, status: :created, location: @gallery } 
       else 
        format.html { render :new } 
        format.json { render json: @gallery.errors, status: :unprocessable_entity } 
       end 
      end 
    end 

    def show 
    end 

    def update 
     if @gallery.update_attributes(gallery_params) 
      flash[:success] = "Gallery Updated" 
      redirect_to @gallery 
     else 
      render 'edit' 
     end 
    end 
private 

    def set_gallery 
     @gallery = Gallery.find(params[:id]) 
    end 

    def gallery_params 
     params.require(:gallery).permit(:title, images_files: []) 
    end 

Если вам нужно больше от меня, дайте мне знать. Заранее спасибо.

ответ

0

В итоге я не использовал 1 форму для редактирования и новую. Я сделал две отдельные формы, нарушив принципы СУХОЙ, но приложил мое приложение к работе, чтобы я мог двигаться дальше.

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

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