0
我有一個叫做「客戶端」的視圖,它顯示了來自呼叫數據庫的呼叫列表。這工作正常。但是,當我添加一個帶有窗體後面的新按鈕時,將會創建該呼叫,但它會重定向到calls_path而不是clients_path。Rails路由重定向到錯誤的路徑
我不知道爲什麼它這樣做,我唯一的理論是,我正在處理與處理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