Ruby on rails Rails 4-路径-更新操作

Ruby on rails Rails 4-路径-更新操作,ruby-on-rails,path,Ruby On Rails,Path,我正在尝试在Rails 4中制作一个应用程序 我有一个模型 显示页面包括一个按钮,该按钮应该是指向编辑(更新)方法的链接 我有: <%= button_to 'Edit', articles_path(article), :method => :update, :class => 'btn btn-large btn-primary' %> 如果我将其更改为: <%= button_to 'Edit', articles_path(article), :meth

我正在尝试在Rails 4中制作一个应用程序

我有一个模型

显示页面包括一个按钮,该按钮应该是指向编辑(更新)方法的链接

我有:

 <%= button_to 'Edit', articles_path(article), :method => :update, :class => 'btn btn-large btn-primary' %>
如果我将其更改为:

<%= button_to 'Edit', articles_path(article), :method => :update, :class => 'btn btn-large btn-primary' %>
我的控制器有:

class ArticlesController < ApplicationController
  before_action :set_article, only: [:show, :edit, :update, :destroy]
def set_article
      @article = Article.find(params[:id])
      authorize @article
    end
def create
    # before_action :authenticate_user!
    # authorize @article
    @article = current_user.articles.new(article_params)

    respond_to do |format|
      if @article.save
        format.html { redirect_to(@article) }
        format.json { render :show, status: :created, location: @article }
      else
        format.html { render :new }
        format.json { render json: @article.errors, status: :unprocessable_entity }
      end
    end
  end

def article_params
      params.require(:article).permit(:body, :title, :image, :tag_list,
        comment_attributes: [:opinion])
    end
接受塔格里亚的建议

我得到这个错误:

ActionController::ParameterMissing in ArticlesController#create
param is missing or the value is empty: article

这意味着您尚未在控制器中的任何位置定义
文章。您需要在Articles show action中定义变量
article=article.find(params:[:id])
或类似变量,这样您就可以找到所需的文章。

这意味着您尚未在控制器中的任何位置定义
article
。您需要在Articles show action中定义变量
article=article.find(params:[:id])
或类似变量,这样您就可以找到所需的文章。

如果您使用
资源:Articles
为您的文章生成路由,rails将为您提供访问编辑操作的特定帮助。这应该起作用:

 <%= button_to 'Edit', edit_article_path(@article), :class => 'btn btn-large btn-primary', method: :get %>
“btn btn大型btn主节点”,方法::get%>
您的代码有两个问题:

  • articles\u path
    是生成索引操作路径的助手,不需要任何参数
  • “更新”不是有效的HTTP动词:只能使用GET、POST、PATCH、PUT和DELETE。更新操作的正确动词是PATCH(或PUT),但是您应该使用简单的GET来显示编辑表单,因为在该阶段没有模型更新

  • 如果您使用了
    resources:articles
    为您的文章生成路由,rails将为您提供一个特定的帮助程序来访问编辑操作。这应该起作用:

     <%= button_to 'Edit', edit_article_path(@article), :class => 'btn btn-large btn-primary', method: :get %>
    
    “btn btn大型btn主节点”,方法::get%>
    
    您的代码有两个问题:

  • articles\u path
    是生成索引操作路径的助手,不需要任何参数
  • “更新”不是有效的HTTP动词:只能使用GET、POST、PATCH、PUT和DELETE。更新操作的正确动词是PATCH(或PUT),但是您应该使用简单的GET来显示编辑表单,因为在该阶段没有模型更新

  • 在展示页面中向我们展示您的完整代码。在展示页面中向我们展示您的完整代码。您好,我已经在我的控制器中设置了\u artcile-复制上述内容。我相信您需要使用注释路径,因为您的文章是该路径的一个模块。同时使用@article,因为这是您在控制器中定义它的方式。您好,我已经在控制器中设置了\u artcile-复制到上面,我相信您需要使用注释路径,因为您的文章是该路径的一个模块。也可以使用@article,因为这是您在控制器中定义它的方式。嗨-我尝试了这个,但得到了这个错误:未定义的局部变量或方法#Hi的'article',它给出了这个错误:路由错误没有路由匹配[POST]“/articles/12/edit”您如何生成路由?您可以发布
    routes.rb
    中的相关行吗?看起来正确,更改路由后是否重新启动了服务器?我没有对路由文件进行任何更改。不过我确实重新启动了服务器-但是我得到了相同的错误Hi-我尝试了这个,但是得到了这个错误:未定义的局部变量或方法'article'for#Hi-它给出了这个错误:路由错误没有路由匹配[POST]“/articles/12/edit”您是如何生成路由的?您可以发布
    routes.rb
    中的相关行吗?看起来正确,更改路由后是否重新启动了服务器?我没有对路由文件进行任何更改。我确实重新启动了服务器,但是我得到了同样的错误
    ActionController::ParameterMissing in ArticlesController#create
    param is missing or the value is empty: article
    
     <%= button_to 'Edit', edit_article_path(@article), :class => 'btn btn-large btn-primary', method: :get %>