Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-路由和def更新_Ruby On Rails_Devise - Fatal编程技术网

Ruby on rails Rails-路由和def更新

Ruby on rails Rails-路由和def更新,ruby-on-rails,devise,Ruby On Rails,Devise,我使用Rails4和Desive进行用户身份验证。我想在稍后的阶段(在另一页上)从用户那里收集额外的输入 我的路线.rb put 'users/color' => application#update resources :users, only: [:update, :edit] 表格html: <%= form_for @user, url: users_color_path, html: { method: :put }) do |f| %> <div cla

我使用Rails4和Desive进行用户身份验证。我想在稍后的阶段(在另一页上)从用户那里收集额外的输入

我的路线.rb

put 'users/color' => application#update
resources :users, only: [:update, :edit]
表格html:

<%= form_for @user, url: users_color_path, html: { method: :put }) do |f| %>
 <div class="form-group">
  <%= f.label :what_is_your_favorite_color %>
  <%= f.text_field :color, class:"form-control" %>
 </div>

 <div class="form-group">
    <%= f.submit "Submit", class:"btn btn-primary" %>
 </div>

<% end %>

我的应用程序控制器:

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  before_action :configure_permitted_parameters, if: :devise_controller?

   protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :name
    devise_parameter_sanitizer.for(:account_update) << :name
  end

end
class ApplicationController设计参数消毒剂。对于(:注册)不,你做得不对

如果你想更新用户。添加用户控制器

在routes.rb中

put 'users/color' => application#update
resources :users, only: [:update, :edit]
应用程序内/controllers/users\u controller.rb

class UsersController < ApplicationController

  before_filter :load_user

  def update
    @user.update_attributes(user_params)
  end

  private

  def load_user
    @user = User.find(params[:id])
  end

  def user_params
    params.require(:user).permit(:color)
  end
end
class UsersController
在app/views/users/edit.html.erb中

<%= render 'form' %>

应用程序内/views/users/_form.html.erb

<%= form_for @user, url: user_path, html: { method: :put }) do |f| %>
 <div class="form-group">
  <%= f.label :what_is_your_favorite_color %>
  <%= f.text_field :color, class:"form-control" %>
 </div>

 <div class="form-group">
    <%= f.submit "Submit", class:"btn btn-primary" %>
 </div>

<% end %>


rake routes以users/:id的形式向我显示上面的url。转到类似users/68的路由显示
No route matches[GET]“/users/68”
上面的路由将生成put”/users/:id“我如何到达表单视图以便用户可以填写它?用户/编辑路由将我带到默认的设计路由。我是否应该将资源名称更改为其他名称以避免与Desive冲突?即使我想更新名为User的模型,这种方法也会起作用吗?我目前已经为我的路线中的用户设计了一个。这是否会导致资源:用户路由冲突