NoMethodError на странице Rails - PullRequest
1 голос
/ 15 июля 2010

Вот шаблон страницы, который у меня есть:

<h1>Editing user</h1>

<% form_for(@user) do |f| %>
    <%= f.error_messages %>
    <p>
        <%= f.label :forename %><br />
        <%= f.text_field :forename %>
    </p>
    <p>
        <%= f.label :surname %><br />
        <%= f.text_field :surname %>
    </p>
    <p>
        <%= f.label :address %>
        <%= f.text_field :address %>
    </p>
    <p>
        <%= f.label :postcode %>
        <%= f.text_field :postcode %>
    </p>
    <p>
        <%= f.label :contact_number %>
        <%= f.text_field :contact_number %>
    </p>
<% end %>

<%= link_to 'Show', @user %> |
<%= link_to 'Back', users_path %>

Контроллер фактически является подтипом из AdminController, поскольку есть отдельный раздел, как показано в следующем объявлении класса:

class Admin::UsersController < ApplicationController

с методом редактирования следующим образом:

def edit
    @user = User.find(params[:id])
end

Со следующей ошибкой:

undefined method `user_path' for #<ActionView::Base:0x104369fe8>

и следующее в моих маршрутах:

map.namespace(:admin) do |admin|
    admin.resources :pages
    admin.resources :treatments
    admin.resources :users
    admin.resources :finances
end

Так что я немного застрял, потому что это form_for(@user) делает это. Я видел это раньше, но, к сожалению, понятия не имею, как его диагностировать.

Ответы [ 3 ]

3 голосов
/ 15 июля 2010

Поскольку вы используете маршруты с разделением имен, вы должны указать пространство имен в вызове form_for.

<% form_for([:admin, @user]) do |f| %>

Подробнее см. В документации Подсказка: прочитайте конец раздела Resource-oriented style)

0 голосов
/ 15 июля 2010

Для пространства имен, которое вы используете .... ссылка будет

<% form_for @user, edit_admin_user_path(@user.id) do |f|%>
     .....
<% end %>

Выполните rake routes, чтобы посмотреть, как выглядят маршруты для контроллера пространства имен

0 голосов
/ 15 июля 2010

Разве расстояние между именами не меняет именованные пути, так что, возможно, потребуется указывать его в такой форме?

form_for (@user, :url => admin_user_path) do |f|
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...