-2

したがって、ユーザーには(彼らが通った)多くの大学があり、大学はユーザーに属しています。これらの大学は、ユーザーのプロファイルの大学属性であるため、college_profileと呼びます。

新しい大学を作ろうとすると、問題が発生します。現在の大学の私のコントローラーは非常に単純です。

def new
  @user = User.find(params[:id])
  @college = current_user.college_profile.build if signed_in?
end

そして、ビューも同様に単純です:(views / college_profiles / new.html.erb)

<%= form_for [@user, @college] do |f| %>
   <%= render 'shared/error_messages', object: f.object %>
   <%= f.label :name %>
 <% end %>

それでも、何らかの理由で次のエラーが発生します。

NoMethodError in College_profiles#new

Showing .../app/views/college_profiles/new.html.erb where line #4 raised:

undefined method `user_college_profiles_path' for #<#<Class:0x5bf1b68>:0x673aef8>

私はまだRailsを学んでいるので、このエラーが正確に何を指しているのかさえ本当に理解していません。かなりの量のグーグルが私に運を与えていないか、答えそこにあるならば、私はそれを見ていたことを理解するのに十分なことを単に知りません。どんな助けでも大歓迎です!

関連性がある場合は、パスについて話しているので、ルートファイルからの抜粋を次に示します。

resources :users, :only => [:index, :new, :create, :destroy, :update, :edit] do
  resources :college_profiles, :only => [:new, :create]
end

さらに情報が必要な場合は、お知らせください。ありがとう!

4

2 に答える 2

2

重要なのform_forは、そのURLが渡されたモデルに基づいているということです。あなたの場合、それは次のとおりです。

<%= form_for [@user, @college] do |f| %>

、およびにuser_college_profiles_path割り当てUserたため、 Railsは自動的に検索します。@usercurrent_user.college_profile@college

幸い、Railsは、送信時にフォームが送信するデフォルトのURLを上書きする方法を提供します。

<%= form_for([@user, @college], :url => your_custom_route_path) do |f| %>

あなたがする必要があるのはyour_custom_routeあなたの中で作成することですroutes.rb

出典:Ruby on Railsガイド:Railsフォームヘルパー

于 2012-04-27T23:38:25.660 に答える
0

Railsは、フォームからコントローラーにデータを投稿するために使用されるパスを作成しようとしています。探しているアクションは作成ですが、ルートには新しいものしか定義されていません。コントローラの名前がCollegeProfilesの場合は、ネストされたルートを次のように変更する必要があります。

resources :college_profiles, :only => [:new, :create]
于 2012-04-27T23:23:17.340 に答える