簡體   English   中英

沒有路由與[POST]“ / users / edit”匹配

[英]No route matches [POST] “/users/edit”

我正在嘗試為我的申請中的注冊用戶創建更新表格

視圖:

<h2><%= @title =%></h2>

<% if @user.errors.any? %>
<div id="error">
<h2><%= pluralize(@user.errors.count,"error") %> prohibited this user from registering</h2>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg%></li>
<%end%>
</ul>
</div>
<%end%>

<%= form_for :user do |form| %>

<div class="reg_form">
<label for="first_name">First Name: </label>
<%= form.text_field :first_name %>
</div>
<div class="reg_form">  
<label for = "last_name">Last Name: </label>
<%= form.text_field  :last_name %>
</div>
<div class="reg_form">
<%=form.submit "Update"%>
</div> 
<%end%>

控制器:users_controller.rb

def index
    unless session[:user_id]
        flash[:notice] = "Please Login first"
        redirect_to :action => "new"
    end
    @title = "Profile"
    @user=User.find(session[:user_id])
end


def edit
    @title="Profile Update"
    @user = User.find(session[:user_id])
    if param_posted?(:user)
        if @user.update_attributes(params[:user])
            flash[:notice] = "Update Successful"
            redirect_to :controller => "user", :action => "profile"
        end
    end
end

我在route.rb中加入了“ edit” =>“ users#edit”。 但是,出現錯誤“沒有路由與[POST]“ / users / edit”匹配”

任何幫助表示贊賞。 謝謝。

您需要POST路由來處理表單提交。 在routes.rb中嘗試resources :users ,並在命令提示符下進行rake routes ,以查看所有可用的路由。

我建議您閱讀《 Rails指南》,並查看使用scaffold創建的所有方法,以及Rails如何處理針對每個方法的不同事物的路由。

RESTful edit路徑應使用GET動詞。 普通的resource#edit方法不會更改數據庫,而只是創建一個填充有所選資源值的表單。 將該表單提交到resource#update (使用PUT動詞)完成了實際更改數據庫的工作。

因此,您的users#edit方法沒有執行標准的RESTful編輯操作。 我建議您使用“標准方式”,除非您有充分的理由並仔細記錄該理由。 我同意花一些時間看一下Rails的布線指南和香草控制器會很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM