Rails アプリで STI を使用しています。
class Project < ActiveRecord::Base
end
class Video < Project
end
次のルートがあります。
resources :projects
resources :videos, :controller => "projects", :type => "video"
そして、ルートをレークすると、/videos に POST できるはずであることがわかります。
POST /videos(.:format) projects#create {:type=>"video"}
しかし、/videos/new にアクセスすると、フォームが /projects に投稿されていることに気付きました
= form_for(@project) do |f|
... creates the following HTML ...
<form action="/projects" method="post" >
<!-- ommited -->
</form
projects_controller の新しいアクションは次のようになります。
def new
@project = params[:type].capitalize.constantize.new
end
def create
@project = params[:type].capitalize.contstantize.new(project_params)
end
/projects ではなく /videos に投稿したいのですが、/videos で始まる URL では params[:type] は常に「video」に設定されますが、/videos で始まる URL では何も設定されません。 /プロジェクトで。
アップデート:
一時的な修正があります:
= f.hidden_field :type
URL が /projects に変更されたときにトリックを実行しますが、フォームを /videos に投稿したいのですが...