Call データベースからの呼び出しのリストを表示する「clients」というビューがあります。それはうまくいきます。ただし、背後にフォームがある新しいボタンを追加すると、呼び出しが作成されますが、clients_path ではなく、calls_path にリダイレクトされます。
なぜこれを行っているのかわかりません。私の唯一の理論は、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