2011-10-28 123 views
1

我有以下:未定義的方法`relationships_path」軌道3.1

途徑:

. 
. 
. 
resources :users do 
    resources :relationships 
end 

new.html.erb:

<section id="main"> 

    <%= form_for @relationship do |f| %> #This is the line the error is on 
    <div class="field"> 
     <%= f.label :name %> 
     <%= f.text_field :name %> 
    </div> 
    <div class="actions"><%= f.submit %></div> 
    <% end %> 
</section> 

relationships_controller.rb

class RelationshipsController < ApplicationController 

    def new 
     @id = params[:user_id] 
     @rel_user = User.find_by_id(params[:user_id]) 
     @relationship = Relationship.new 
    end 

    def create 

    end 

end 

relationship.rb#模型

class Relationship < ActiveRecord::Base 
    belongs_to :user 

    # TYPES = ['Family', 'Friend', 'Spouse'] 
end 

我已經在Stack Overflow上尋找了,並且似乎找不到答案,但我認爲它與嵌套我的資源有關。我得到以下錯誤:

undefined method 'relationships_path' for #<#<Class:0x007ff45f15ff80>:0x007ff45f15bc78>

任何想法?

+1

你嵌套在'relationship' ressources這樣的路徑變化。根據你以前的問題,運行'rake routes'來獲得解決方案。 – apneadiving

+0

@apneadiving所以我看到我需要使用:new_user_relationship,但不是這一行的問題:'@relationship = Relationship.new'在我的控制器?我錯過了什麼? –

回答

5

您應該瞭解所有'_path'助手從route.rb文件生成的。所以在你的案例路線將產生這個幫手users_relationship_path顯示操作。

但在你的表格你只用的form_for @relationship預計將使用relationship_path幫手。

所以,你應該告訴你的表單輔助使用嵌套,就像這樣:

<%= form_for [@rel_user, @relationship] do |f| %> 
+0

我使用戶複數,因爲一切都是,但你是說如果用戶有很多關係,那麼它應該是單數? –

+1

這取決於你有多少用戶,也許你是對的,所以我修復了我的答案。 – megas

+0

你是否只需要一個用戶和關係的實例傳入表單?或者爲什麼我要使用@rel_user而不是@current_user?我測試過他們,他們都似乎工作。 –

相關問題