2015-06-09 49 views
0

我使用Rails 4.2的Ruby 2.1.5没有路由匹配[PATCH] “/自care2/commonController” 时更新数据

这里是我的路线文件:

Rails.application.routes.draw do 
    root to: "services#index" 
    resources :apis, only: [:new, :create] 
    resources :commons, path: "/self-care2/commonController" do 
     collection do 
      post :search, to: "commons#search" 
     end 
    end 
end 

这里是我的耙路线的结果是:

Prefix Verb URI Pattern          Controller#Action 
     root GET /            services#index 
     apis POST /apis(.:format)         apis#create 
    new_api GET /apis/new(.:format)        apis#new 
search_commons POST /self-care2/commonController/search(.:format) commons#search 
    commons GET /self-care2/commonController(.:format)   commons#index 
      POST /self-care2/commonController(.:format)   commons#create 
new_common GET /self-care2/commonController/new(.:format)  commons#new 
edit_common GET /self-care2/commonController/:id/edit(.:format) commons#edit 
    common GET /self-care2/commonController/:id(.:format)  commons#show 
      PATCH /self-care2/commonController/:id(.:format)  commons#update 
      PUT /self-care2/commonController/:id(.:format)  commons#update 
      DELETE /self-care2/commonController/:id(.:format)  commons#destroy 

这里是控制器的一些动作:

def edit 
    @api = Api.find(params[:id]) 
end 

def update 
    @api = Api.find(params[:id]) 
    if @api.update(api_params) 
     flash[:info] = request.original_url + ".do?apiname=" + "#{@api.name}" 
     redirect_to root_path 
    else 
     @api.statuses.new 
     render :edit 
    end 
end 

def new 
    @api = Api.new 
    @status = @api.statuses.new 
    @status.descriptions.new 
end 

def create 
    @api = Api.new(api_params) 
    if @api.save 
    flash[:info] = request.original_url + ".do?apiname=" + "#{@api.name}" 
    redirect_to root_path 
    else 
    @api.statuses.new 
    render :new 
    end 
end 

这里是我的编辑模板:

<%= form_for @api, :url => commons_path, :method => :patch do |f| %> 
    <div class="form-group"> 
    <%= f.label :name, "API Name", class: "col-sm-2 control-label" %> 
    <div class="col-sm-8"> 
     <%= f.text_field :name, class: "form-control" %> 
    </div>  
    </div> 

    <%= f.fields_for :statuses do |status| %> 
    <div class="form-group"> 
     <%= status.label :name, "Status", class: "col-sm-2 control-label" %> 
     <div class="col-sm-8"> 
     <%= status.text_field :name, class: "form-control" %> 
     </div> 
    </div> 

    <%= status.fields_for :descriptions do |description| %> 
     <div class="form-group"> 
     <%= description.label :value, "Body", class: "col-sm-2 control-label" %> 
     <div class="col-sm-8"> 
      <%= description.text_area :value, class: "form-control", rows: 12, cols: 65 %> 
     </div> 
     </div> 
    <% end %> 
    <% end %> 

    <%= f.submit("Edit Data", class: 'btn btn-primary col-sm-offset-2') %> 
    <%= link_to "Cancel", root_path, class: "btn btn-danger" %> 
<% end %> 

当我进入编辑模板,我可以看到旧数据和新的数据替换它们。 但显示“无路由匹配[PATCH]‘/自care2/commonController’后,我点击提交按钮

任何人都知道发生什么事

+0

已经发布耙路径结果 – Dreams

回答

2

既然你更新特定的API,它不应该是这样。?

<%= form_for @api, :url => common_path(@api.id), :method => :patch do |f| %> 
+0

谢谢。它帮助我解决了这个问题。 – Dreams