如果我点击我的编辑链接,该链接就会生效,并转到我要编辑的特定图库的编辑表单。如果我点击同一控制器的新链接,我会收到以下错误:
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 :(得分:0)
我最终没有使用1个表单进行编辑和新编辑。我制作了两个单独的表单,违反了DRY原则,但让我的应用程序工作,所以我可以继续前进。