【问题标题】:Why would my Edit Form be view-able but not my New form of the same controller?为什么我的编辑表单可以查看,但我的同一控制器的新表单不能查看?
【发布时间】:2016-05-09 16:45:32
【问题描述】:

如果我单击我的编辑链接,该链接将起作用,并将我带到我要编辑的特定画廊的编辑表单。如果我单击同一控制器的新链接,则会收到以下错误:

    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

如果您需要我提供更多信息,请告诉我。提前致谢。

【问题讨论】:

    标签: forms ruby-on-rails-4 nomethoderror nested-resources


    【解决方案1】:

    我最终没有使用 1 个表单进行编辑和新建。我制作了两个单独的表单,违反了 DRY 原则,但让我的应用程序正常工作,这样我就可以继续前进了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多