我有一个名为“clients”的视图,它显示了来自 Call 数据库的调用列表。这很好用。但是,当我添加一个带有表单的新按钮时,将创建调用,但它重定向到调用路径而不是客户端路径。
我不知道它为什么这样做,我唯一的理论是我正在处理在clients_controller 之外接触数据的操作,并且Rails 以某种方式默认为calls_path。我的删除操作也发生了同样的事情。有人可以帮我理解这一点吗?
calls_controller
def new
@call = Call.new :call_status => "open"
respond_with @call
end
def create
@call = Call.new(params[:call])
if @call.save
redirect_to clients_path, notice: "Call was successfully created."
else
render :new
end
end
def destroy
@call = Call.find(params[:id])
@call.destroy
respond_to do |format|
format.html { redirect_to clients_index_path }
format.json { head :no_content }
end
end
_form.html.erb
<%= form_for(@call) do |f| %>
<%= f.label :caller_name %>
<%= f.text_field :caller_name %>
<%= f.label :caller_phone %>
<%= f.text_field :caller_phone, :placeholder => 'xxx-xxx-xxxx' %>
<%= f.label :caller_email %>
<%= f.text_field :caller_email %>
<%= f.button :submit %>
<% end %>
routes.rb
devise_for :users
match 'mdt' => 'mdt#index'
get "home/index"
resources :medics
resources :clients
resources :users
resources :units
resources :mdt do
collection do
put "in_service"
put "en_route"
put "to_hospital"
put "at_hospital"
put "on_scene"
put "out_of_service"
put "at_station"
put "staging"
put "at_post"
put "man_down"
end
end
resources :calls do
member do
post 'close'
end
end
root :to => 'home#index'
devise_scope :user do
get "/login" => "devise/sessions#new"
delete "/logout" => "devise/sessions#destroy"
end