NoMethodError для * _path - PullRequest
       3

NoMethodError для * _path

0 голосов
/ 21 марта 2012

Я пытаюсь создать ссылку "изменить" для вложенного ресурса в шаблоне представления. Родительским ресурсом является Project, а дочерним ресурсом - Requirement. При загрузке шаблона шоу проекта я получаю следующую ошибку:

NoMethodError в проектах # show
неопределенный метод `edit_requirement_path 'для ## класса: 0x000001009e5bc8>: 0x00000100f83760>

Ниже приведен код из части требований (_requirement.html.erb).

<%= div_for requirement do %>
  <h4>
    <%= requirement.name  %>
  </h4>
  <p><b>Type: </b><%= requirement.requirement_type.name %></p>
  <p><b>Priority: </b><%= requirement.requirement_priority.name %></p>
  <p><b>Detail: </b><%= simple_format requirement.detail %></p>
  <p><b>Initiator: </b><%= requirement.initiator %></p>
  <p><b>Approved: </b>
  <% if requirement.approved? %>
    Yes
  <% else %>
    No
  <% end %>
  </p>
  <%= link_to 'Edit Requirement', edit_requirement_path(@requirement)%>
<% end %>

Это код действия «Изменить» в RequirementsController.

class RequirementsController < ApplicationController
  ...
  def edit
    @requirement = Requirement.find(params[:id])
  end
  ...

Это код из шаблона шоу проекта (show.html.erb). ...

Дата начала: <% = @ project.start_date%>

<p>
  <b>End date:</b>
  <%= @project.end_date %>
</p>

<p>
  <b>Requirements Approved:</b>
  <%= @project.requirements_approved %>%
</p>

<div id="requirements_display">
<h3>Project Requirements</h3>
  <%= render @project.requirements %>
</div>

<div id="requirements_module">
<h3>Add New Requirement</h3>
<%= render :file => "requirements/new" %>
</div>

<%= link_to 'Edit', edit_project_path(@project) %> |
<%= link_to 'Back', projects_path %> 

А это код из файла rout.rb.

Nexus::Application.routes.draw do
  resources :requirement_priorities
  resources :project_services

  root :to => "projects#index"

  resources :projects do
    resources :requirements
  end

1 Ответ

0 голосов
/ 21 марта 2012

На линии:

<%= link_to 'Edit Requirement', edit_requirement_path(@requirement)%>

вы передаете переменную экземпляра @requirement вместо локальной переменной requirement (без символа @).

Это работает, если вы удалите @?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...