0

私はレールが初めてで、奇妙なジャンクションで立ち往生しています。問題はルートに関連しています。以下は私のコードです

ルート$

resources :users do
 resources :requests 
end

user.rb

class User < ActiveRecord::Base
 attr_accessor :password
 attr_accessible :email, :firstname, :lastname, :state, :city, :password
 has_many :requests ,:foreign_key => :user_id,:autosave => :true

request.rb

class Request < ActiveRecord::Base
attr_accessible :email, :status, :user_id,:token
belongs_to :user

リクエストフォーム html

 <%= form_for (user_requests_path) do |f| %>
<div class="field">

<%= f.label "Email" %><br />
<div class="fieldgroup">

<%= f.text_field :email  , :class=>"textfield"%>

</div>
<div id="spacer">

</div>
<div class="fieldgroup">
<%= f.submit "Invite", :class=>"custombutton" %>
  </div>
   <% end %>
</div>

リクエスト フォームの下の [招待] ボタンをクリックすると、request#create を呼び出すのではなく、次のエラーが発生します。

ルーティング エラー

No route matches [POST] "/users/9/requests/new"

リクエストコントローラー

def create
@user = User.find(params[:user_id])
@request = @user.requests.create(params[:request])
redirect_to user_path(@user)
 end
4

3 に答える 3

0

そのためには、にネストされたリソースを設定する必要がありますroutes.rb

参照:Rails3でのネストされたリソースのルーティング

于 2012-08-29T09:09:15.587 に答える
0

ネストされたリソースの場合、両方のパラメーターをいくつかのヘルパーに渡す必要があります。たとえば、

user_request_path(@user, @request)

等々。Rails Resources Guide は大きな助けになります。

于 2013-02-08T19:52:35.730 に答える
0

ユーザーオブジェクトを渡す必要があるため、参照するユーザーインスタンスをレールします。

<%= form_for (user_requests_path(@user)) do |f| %>

また、

has_many :requests ,:foreign_key => :user_id,:autosave => :true

を渡す必要はありません:foreign_key => :user_id。これはデフォルトの外部キー、つまり「model_id」です。

于 2012-08-31T10:08:52.110 に答える