没有路线匹配[PATCH]" /contact.1"

时间:2015-08-13 13:15:32

标签: ruby-on-rails ruby ruby-on-rails-4

我是rails的新手,并且在Rails 4.2.3应用程序中遇到了上述错误。我在更新资源时收到此错误:

No route matches [PATCH] "/contact.1"

这是我的应用程序代码片段:

的routes.rb

resources :contacts

模型/ contact.rb

class Contact < ActiveRecord::Base
  belongs_to :user
  validates :name,  presence: true, length: { maximum: 50 }
  validates :number, presence:true
end

视图/联系人/ edit.html.erb

<h1> Editing Contact </h1>

<%= form_for @contact do |f| %>
    <%= f.label :name %><br>
    <%= f.text_field :name %><br>

    <%= f.label :number %><br>
    <%= f.text_field :number%><br><br>

    <%= f.submit "Update Contact", class: "btn btn-primary" %>
<% end %>

控制器/ contacts_controller.rb

def edit
    @contact = Contact.find(params[:id])
end

def update
    @contact = Contact.find(params[:id])
    if @contact.update(contact_params)
        flash[:success] = "Contact Update Successfully..."
        redirect_to contacts_url
    else
        render 'edit'
    end
end

令人惊讶的是,路径生成为/contact.1而不是/contact/1

我还尝试将url: contact_path(@contact), method: :patch添加到form_for,但没有运气。

有人可以告诉我代码有什么问题吗?

1 个答案:

答案 0 :(得分:0)

在您的控制器中,尝试将redirect_to从“redirect_to contacts_url”更改为“redirect_to contacts_path”。在控制器内部,您应该使用路径而不是URL。所以你的代码将是这样的:

 def update
     @contact = Contact.find(params[:id])
     if @contact.update(contact_params)
         flash[:success] = "Contact Update Successfully..."
         redirect_to contacts_path
     else
         render 'edit'
     end
 end