Ruby on rails CRUD的行为是错误的

Ruby on rails CRUD的行为是错误的,ruby-on-rails,ruby,devise,action,crud,Ruby On Rails,Ruby,Devise,Action,Crud,我是RubyonRails的新手。最近我创建了一个项目,并添加了一些宝石来支持我的应用程序。但一些问题开始出现。我创建了两条新路线,以使用同一型号的Desive。然后,应用程序没有使用正确的操作路由。要使用编辑操作,应用程序将重定向到创建操作。是什么导致了这个问题?按照我的文件: 我的路线.rb Rails.application.routes.draw do as :member do resource :registration, only: [:create], :pat

我是RubyonRails的新手。最近我创建了一个项目,并添加了一些宝石来支持我的应用程序。但一些问题开始出现。我创建了两条新路线,以使用同一型号的Desive。然后,应用程序没有使用正确的操作路由。要使用编辑操作,应用程序将重定向到创建操作。是什么导致了这个问题?按照我的文件:

我的路线.rb

Rails.application.routes.draw do  

  as :member do
    resource :registration, only: [:create], :path => '/members'
  end
  resources :members_admin, :controller => 'members'

  devise_for :members, :controllers => { :registrations => 'registrations'}

  resources :managments
  resources :expenses
  resources :incomings
  resources :members
  resources :registrations
  get 'home/index'
  root to:'home#index'


#  patch 'members_admin' => "members#update",  :as => "members/update"

end
结束

form.html.erb

<%= form_for @member,url: members_admin_index_path, :html => { :class => "form-horizontal member", :method => :post } do |f| %>

  <% if @member.errors.any? %>
    <div id="error_expl" class="panel panel-danger">
      <div class="panel-heading">
        <h3 class="panel-title"><%= pluralize(@member.errors.count, "erro") %> impediu(ram) que fosse criado:</h3>
      </div>
      <div class="panel-body">
        <ul>
        <% @member.errors.full_messages.each do |msg| %>
          <li><%= msg %></li>
        <% end %>
        </ul>
      </div>
    </div>
  <% end %>

  <div class="form-group">
    <%= f.label :name, :class => 'control-label col-lg-2' %>
    <div class="col-lg-6">
      <%= f.text_field :name,autofocus: true, :class => 'form-control' %>
    </div>
    <%=f.error_span(:name) %>
  </div>

  <div class="form-group">
      <%= f.label :email, :class => 'control-label col-lg-2' %>
      <div class="col-lg-6">
        <%= f.email_field :email, :class => 'form-control' %>
      </div>
      <%=f.error_span(:email) %>
  </div>

  <div class="form-group">
    <%= f.label :password, :class => 'control-label col-lg-2' %>
    <% if @minimum_password_length %>
      <em>(<%= @minimum_password_length %> characters minimum)</em>
    <% end %>
    <div class="col-lg-4">
      <%= f.password_field :password, autocomplete: "off", :class => 'form-control'%>
    </div>
    <%=f.error_span(:password) %>
  </div>

 <div class="form-group">
    <%= f.label :password_confirmation, :class => 'control-label col-lg-2' %>
    <% if @minimum_password_length %>
      <em>(Insira no mínimo <%= @minimum_password_length %> caracteres.)</em>
    <% end %>
    <div class="col-lg-4">
      <%= f.password_field :password_confirmation, autocomplete: "off", :class => 'form-control'%>
    </div>
    <%=f.error_span(:password_confirmation) %>
  </div>

  <div class="form-group">
    <div class="col-lg-offset-2 col-lg-3">
      <%= f.label :situation %>
      <%= f.check_box :situation, :class => 'col-lg-offset-3 col-lg-2' %>
    </div>
    <%=f.error_span(:situation) %>
  </div>

  <div class="form-group">
    <%= f.label :function, :class => 'control-label col-lg-2' %>
    <div class="col-lg-4">
      <%= f.text_field :function, :class => 'form-control' %>
    </div>
    <%=f.error_span(:function) %>
  </div>
  <div class="form-group">
    <%= f.label :start_Managment, :class => 'control-label col-lg-2' %>
    <div class="col-lg-4">
      <%= f.date_select :start_Managment, start_year: 2001, :class => 'form-control' %>
    </div>
    <%=f.error_span(:start_Managment) %>
  </div>
  <div class="form-group">
    <%= f.label :dt_Admission, :class => 'control-label col-lg-2' %>
    <div class="col-lg-4">
      <%= f.date_select :dt_Admission, start_year: 2001, :class => 'form-control' %>
    </div>
    <%=f.error_span(:dt_Admission) %>
  </div>

  <div class="form-group">
    <div class="col-lg-offset-2 col-lg-10">
      <%= f.submit nil, :class => 'btn btn-primary' %>
      <%= link_to t('.cancel', :default => t("helpers.links.cancel")),
                members_path, :class => 'btn btn-default' %>
    </div>
  </div>

<% end %>

求求你,我需要帮助。

问题在于竞争路线,看起来你几乎成功了。我以前遇到过这样的问题,您无法创建用户,或者在登录后无法创建成员

在routes文件中,尝试这样做,只需将用户更改为成员,并确保您告诉注册控制器将创建成员默认设置为Desive的创建

routes.rb

Rails.application.routes.draw do  

  as :member do
    resource :registration, only: [:create], :path => '/members'
  end
  resources :members_admin, :controller => 'members'

  devise_for :members, :controllers => { :registrations => 'registrations'}

  resources :managments
  resources :expenses
  resources :incomings
  resources :members
  resources :registrations
  get 'home/index'
  root to:'home#index'


#  patch 'members_admin' => "members#update",  :as => "members/update"

end
注册控制器.rb

class RegistrationController

下次请发布stacktrace以帮助阅读正在发生的事情

Man您是否必须使用方法PUTPATCH进行编辑。路由相同,但HTTP方法不同。我想你必须组织你的路线,因为你有点困惑

这样你打破了Rails模式,所以你会有问题。您的表单无法编辑创建,因为您声明将通过POST方法响应,并且您的URL正在发送到成员管理索引路径


我的意见是,您应该尝试重构它,否则以后会出现一些问题。

好的!非常感谢你。我需要为注册创建新文件吗?注册登录是可以的。问题是模型的CRUD…在路线更新后,您对CRUD模型的哪个部分有问题?如果我按照您的指示更新路线,我还有其他问题。我不能登录。应用程序返回:“找不到id为sign_in的成员”。但是如果对行“resources:members,:only=>[:index,:show,:edit,:update,:new,:create]”进行注释,请继续操作。我尝试使用路由“members_admin”作为CRUD。在同一路径(成员)中,创建了用户,但我不需要登录他。
Routes

Routes match in priority from top to bottom
Helper  HTTP Verb   Path    Controller#Action
Path / Url          
registration_path   POST    /members(.:format)  registrations#create
members_admin_index_path    GET     /members_admin(.:format)    members#index
    POST    /members_admin(.:format)    members#create
new_members_admin_path  GET     /members_admin/new(.:format)    members#new
edit_members_admin_path     GET     /members_admin/:id/edit(.:format)   members#edit
members_admin_path  GET     /members_admin/:id(.:format)    members#show
    PATCH   /members_admin/:id(.:format)    members#update
    PUT     /members_admin/:id(.:format)    members#update
    DELETE  /members_admin/:id(.:format)    members#destroy
new_member_session_path     GET     /members/sign_in(.:format)  devise/sessions#new
member_session_path     POST    /members/sign_in(.:format)  devise/sessions#create
destroy_member_session_path     DELETE  /members/sign_out(.:format)     devise/sessions#destroy
member_password_path    POST    /members/password(.:format)     devise/passwords#create
new_member_password_path    GET     /members/password/new(.:format)     devise/passwords#new
edit_member_password_path   GET     /members/password/edit(.:format)    devise/passwords#edit
    PATCH   /members/password(.:format)     devise/passwords#update
    PUT     /members/password(.:format)     devise/passwords#update
cancel_member_registration_path     GET     /members/cancel(.:format)   registrations#cancel
member_registration_path    POST    /members(.:format)  registrations#create
new_member_registration_path    GET     /members/sign_up(.:format)  registrations#new
edit_member_registration_path   GET     /members/edit(.:format)     registrations#edit
    PATCH   /members(.:format)  registrations#update
    PUT     /members(.:format)  registrations#update
    DELETE  /members(.:format)  registrations#destroy
    GET     /members_admin/:nome(.:format)  members#edit
member_admin_index_path     GET     /member_admin(.:format)     member_admin#index
    POST    /member_admin(.:format)     member_admin#create
new_member_admin_path   GET     /member_admin/new(.:format)     member_admin#new
edit_member_admin_path  GET     /member_admin/:id/edit(.:format)    member_admin#edit
member_admin_path   GET     /member_admin/:id(.:format)     member_admin#show
    PATCH   /member_admin/:id(.:format)     member_admin#update
    PUT     /member_admin/:id(.:format)     member_admin#update
    DELETE  /member_admin/:id(.:format)     member_admin#destroy
managments_path     GET     /managments(.:format)   managments#index
    POST    /managments(.:format)   managments#create
new_managment_path  GET     /managments/new(.:format)   managments#new
edit_managment_path     GET     /managments/:id/edit(.:format)  managments#edit
managment_path  GET     /managments/:id(.:format)   managments#show
    PATCH   /managments/:id(.:format)   managments#update
    PUT     /managments/:id(.:format)   managments#update
    DELETE  /managments/:id(.:format)   managments#destroy
expenses_path   GET     /expenses(.:format)     expenses#index
    POST    /expenses(.:format)     expenses#create
new_expense_path    GET     /expenses/new(.:format)     expenses#new
edit_expense_path   GET     /expenses/:id/edit(.:format)    expenses#edit
expense_path    GET     /expenses/:id(.:format)     expenses#show
    PATCH   /expenses/:id(.:format)     expenses#update
    PUT     /expenses/:id(.:format)     expenses#update
    DELETE  /expenses/:id(.:format)     expenses#destroy
incomings_path  GET     /incomings(.:format)    incomings#index
    POST    /incomings(.:format)    incomings#create
new_incoming_path   GET     /incomings/new(.:format)    incomings#new
edit_incoming_path  GET     /incomings/:id/edit(.:format)   incomings#edit
incoming_path   GET     /incomings/:id(.:format)    incomings#show
    PATCH   /incomings/:id(.:format)    incomings#update
    PUT     /incomings/:id(.:format)    incomings#update
    DELETE  /incomings/:id(.:format)    incomings#destroy
members_path    GET     /members(.:format)  members#index
    POST    /members(.:format)  members#create
new_member_path     GET     /members/new(.:format)  members#new
edit_member_path    GET     /members/:id/edit(.:format)     members#edit
member_path     GET     /members/:id(.:format)  members#show
    PATCH   /members/:id(.:format)  members#update
    PUT     /members/:id(.:format)  members#update
    DELETE  /members/:id(.:format)  members#destroy
registrations_path  GET     /registrations(.:format)    registrations#index
    POST    /registrations(.:format)    registrations#create
new_registration_path   GET     /registrations/new(.:format)    registrations#new
edit_registration_path  GET     /registrations/:id/edit(.:format)   registrations#edit
    GET     /registrations/:id(.:format)    registrations#show
    PATCH   /registrations/:id(.:format)    registrations#update
    PUT     /registrations/:id(.:format)    registrations#update
    DELETE  /registrations/:id(.:format)    registrations#destroy
home_index_path     GET     /home/index(.:format)   home#index
root_path   GET     /   home#index
devise_for :users, :controllers => { :registrations => 'registration'}, :path_names => { :'sign_up.html.erb' => 'register'}   
resources :users, :only => [:index, :show, :edit, :update, :new, :create ]  
resources :users_admin, :controller => 'users'
class RegistrationController < Devise::RegistrationsController
  def create
    super
  end
end