0

この質問は、前の質問: Ruby on Rails: Custom actionsのフォローアップです。

フォローアップとして、form_for でカスタム アクションを使用する構文は何ですか? 私のアプリでは、_invite_form.html.erb というパーシャルがあり、フォームを :url 仕様に設定して、フォームをユーザー コントローラーの招待アクションにリンクすると考えました。

 <div id = "invite_form">
<h1>Invite</h1> 
<%= form_for(invited, :url => invite_user_path) do |f| %>
    <div class="field">
        <%= f.text_field :email, :class => "inputform round", :placeholder => "email" %>
    </div>
    <div class="actions">
        <%= f.submit "Invite", :class => "submit_button round" %>
    </div>  
<% end %>
 </div>

このパーシャルは特定のページで呼び出され、次のエラーが表示されます。

  "No route matches {:action=>"invite", :controller=>"users"}"

私の routes.rb ファイルには、適切な行が含まれています。

 resources :users do
     member do
      get :invite
      post :invite
    end
 end

ルートが機能しないのはなぜですか?これらのファイルを変更して、フォームがユーザー コントローラで「招待」アクションを使用するようにするにはどうすればよいですか?

** 前に言及するのを忘れていました: ユーザー ヘルパー: users_helper.rb で招待を定義しました:

 module UsersHelper
   def invited
     @invited = User.new(params[:user])
   end
 end
4

2 に答える 2

2

まだ永続ユーザーがいないため、次の方法でこれを収集操作にします。

  1. コントローラでに変更invite_user_pathするinvite_users_path
  2. あなたのルートでに変更member doするcollection do
于 2011-07-13T15:24:00.813 に答える
1

invite_user_path引数としてユーザーが必要です。試してみてくださいinvite_user_path(invited)saveユーザーへのパスを計算する前に、ユーザーも必要になります。

実験するにrails consoleは、以下の違いを確認してください。

app.invite_user_path
app.invite_user_path(User.first)
app.invite_user_path(User.new)
于 2011-07-12T19:44:05.080 に答える