неопределенный метод `relations_path 'в рельсах 3.1 - PullRequest
1 голос
/ 28 октября 2011

У меня есть следующее:

Маршруты:

.
.
.
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>

relations_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

relations.rb # model

class Relationship < ActiveRecord::Base
    belongs_to :user

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

Я охотился за переполнением стека и, похоже, не могу найти ответ, хотя, думаю, это как-то связано с вложением моих ресурсов.Я получаю следующую ошибку:

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

Есть идеи?

1 Ответ

5 голосов
/ 28 октября 2011

Вы должны понимать, что все помощники '_path' сгенерированы из файла route.rb .Так что в вашем случае route сгенерирует этот помощник users_relationship_path для действия show.

Но в вашей форме вы используете просто form_for @ Relations который, как ожидается, будет использовать путь_отношения помощник.

Таким образом, вы должны указать своему помощнику формы использовать вложенность, например:

<%= form_for [@rel_user, @relationship]  do |f| %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...