0

テンプレート「groups/show.html.erb」があります。パラメーターをコントローラーに渡すことでパーシャルをレンダリングするリンクがあります。次に、コントローラーはパラメーターを使用して、どのJS呼び出しを行うかを識別します。

<%= link_to 'Add a Video', group_path(create_video: true), remote: true %>

その後、コントローラーで

elsif params[:create_video]
  @video = Group.find(params[:id]).videos.build
  respond_to do |format|
    format.js {render action: 'create_video'}
  end

これにより、videos_controllerのcreateメソッドを使用してビデオを作成するフォームでパーシャルが表示されます。フォームの検証が失敗し、「groups / show」をレンダリングしようとすると、ルーティングエラーが発生します。

_create_video.html.erb

<%= form_for @video, :url => group_videos_path(@group) do |f| %>
    <%= f.text_field :name %>
    <%= f.submit %>
<% end %>

{:action => "show"、:controller => "groups"、:create_video=>true}に一致するルートはありません

これを機能させるには、routes.rbで明示的に一致させることができると思いますが、それを行うためのより良い方法はありますか?本当にありがとう

4

1 に答える 1

1

あなたはどのグループを与えるのを忘れています、あなたは通常次のようなことをするべきです

group_path(@group, create_video: true)

お役に立てれば。

于 2012-06-15T08:54:19.100 に答える