我正在关注 CarrierWave (#253) 的 Railscast 教程。但是立即注意到创建者已经制作了画廊模型/控制器。这从未在视频中显示或在不同的教程中解释过。我一直在创建画廊,除了这个页面 /photos/new?gallery_id=3 之外,几乎所有东西都在工作,它应该向我展示一个上传照片的字段。
我可以去 /galleries,它会列出所有创建的画廊。然后我可以单击其中一个画廊并被带到 /galleries/3,它将显示添加、删除和查看画廊的链接。
我收到的错误是“未定义的方法‘键?’ 对于零:NilClass”。PhotosController#new 中的 NoMethodError 是页面的标题。
有人可以看看并指出我正确的方向吗?谢谢。
照片控制器:
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 %>
新的.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'