0

I am having the following form in my profile/edit.html.erb

<%= form_for @customer, url: {controller: :customer, action: :update} do |f| %>
<%= f.text_field :username, value: @customer.username%>
<%= f.submit 'Update' %>
<% end %>

And in my customer controller i have following method

def edit
    @customer = Customer.find session[:customer_id]
end

def update
      @customer.update(customer_params)
end

private
private
  def customer_params
    params[:customer]
  end

When i submit the form getting route error

No route matches [PATCH] "/customer/update"

I have added following line in route.rb then too facing same error

resources :profiles
  resources :customers
4

3 回答 3

0

将控制器::客户更改为控制器::客户s

于 2013-11-07T02:43:16.793 回答
0

在您使用更新方法之前,您的更新操作永远不会定义@customer。在更新操作中尝试这样的操作:

@customer = Customer.find session[:customer_id]
@customer.update(customer_params)

此外,您的客户参数设置不正确。要让它允许表单中的项目,请使用以下命令:

def profile_params
      params.require(:customer).permit(:username)
end
于 2013-11-07T02:56:46.560 回答
0

调试此类问题的最简单方法是查看“rake routes”的输出,并查看您尝试调用的 URL 是否存在于输出中。

如果我不得不猜测...看来您需要在补丁请求中传递客户的 ID..类似于 /customer/1/update 的东西,其中 1 是数据库中客户的 ID

编辑:实际上只需取出 form_for 的 url 部分。我认为这就是脱轨的原因。所以你的 form_for 应该看起来像

<%= form_for @customer do |f| %>
于 2013-11-06T19:43:52.837 回答