我是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
,但没有运气。
有人可以告诉我代码有什么问题吗?
答案 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