Ruby on rails CRUD的行为是错误的
我是RubyonRails的新手。最近我创建了一个项目,并添加了一些宝石来支持我的应用程序。但一些问题开始出现。我创建了两条新路线,以使用同一型号的Desive。然后,应用程序没有使用正确的操作路由。要使用编辑操作,应用程序将重定向到创建操作。是什么导致了这个问题?按照我的文件: 我的路线.rbRuby 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
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您是否必须使用方法PUT或PATCH进行编辑。路由相同,但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