0

CarrierWave の Railscast チュートリアル (#253) に従っていました。しかし、作成者がすでにギャラリー モデル/コントローラーを作成していることにすぐに気付きました。これは、ビデオに表示されたり、別のチュートリアルで説明されたりすることはありません。私はギャラリーを作成しており、写真をアップロードするためのフィールドを表示すると思われるこのページ /photos/new?gallery_id=3 を除いて、ほぼすべてが機能しています。

/galleries に移動すると、作成されたすべてのギャラリーが一覧表示されます。ギャラリーの 1 つをクリックすると、/galleries/3 に移動し、ギャラリーの追加、削除、および表示へのリンクが表示されます。

私が受け取っているエラーは、「undefined method `key?'」です。for nil:NilClass". PhotosController#new の NoMethodError はページのタイトルです。

誰かが見て、私を正しい方向に向けることができますか? ありがとう。

photos_controller:

class PhotosController < ApplicationController
  def new
    @photo = Photo.new(:gallery_id => params[:gallery_id])
  end

  def create
    @photo = Photo.new(params[:photo])
    if @photo.save
      flash[:notice] = "Successfully created photos."
      redirect_to @photo.gallery
    else
      render :action => 'new'
    end
end

  def edit
    @photo = Photo.find(params[:id])
  end

  def update
    @photo = Photo.find(params[:id])
    if @photo.update_attributes(paramas[:photo])
      flash[:notice] = "Successfully updated photo."
      redirect_to @photo.gallery
    else
      render :action => 'edit'
    end
  end

  def destroy
    @photo = Photo.find(params[:id])
    @photo.destroy
    flash[:notice] = "Successfully destroyed photo."
    redirect_to @photo.gallery
  end
end

ビュー/写真の _form.html

<%= form_for @photo, :html => {:multipart => true} do |f| %>
    <%= f.error_messages %>
    <%= f.hidden_field :gallery_id %>
    <p>
        <%= f.label :name %><br/>
        <%= f.text_field :name %>
        </p>
        <p>
            <%= f.file_field :image %>
            </p>

            <p><%= f.submit %></p>
<% end %>

new.html

<% title "New Photo " %>

<%= render 'form' %>

<p><%= link_to "Back to Gallery", @photo.gallery %></p>

ルート.rb

Dating::Application.routes.draw do
  get 'signup' => 'users#new'
  get 'login' => 'sessions#new'
  get 'logout' => 'sessions#destroy'
  get 'edit' => 'users#edit'
  get "/profile/:id" => "users#show"

  resources :users
  resources :sessions
  resources :password_resets
  resources :galleries
  resources :photos

  root to: 'users#new'
  root to: 'galleries#index'
4

0 に答える 0