form_for пытается получить доступ к несуществующей path_helper с поддоменом - PullRequest
0 голосов
/ 08 марта 2012

В моем поддомене "buy" у меня есть следующие маршруты:

  constraints Subdomain::Buy do
    scope module: :buy do
      resources :users do
        resources :messages
      end

Я создаю новую форму сообщения, используя следующий код:

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

с действием контроллера:

class Buy::MessagesController < ApplicationController
  def new
    @user = User.find(params[:user_id])
    @message = Buy::Message.new(receiver: @user, sender: current_user)
    render
  end

Однако на странице выдается следующее исключение:

undefined method `user_buy_messages_path'

Когда я проверяю с помощью rake routes, я получаю следующие методы:

          user_messages GET    /users/:user_id/messages(.:format)                           buy/messages#index
                           POST   /users/:user_id/messages(.:format)                           buy/messages#create
          new_user_message GET    /users/:user_id/messages/new(.:format)                       buy/messages#new
         edit_user_message GET    /users/:user_id/messages/:id/edit(.:format)                  buy/messages#edit
              user_message GET    /users/:user_id/messages/:id(.:format)                       buy/messages#show
                           PUT    /users/:user_id/messages/:id(.:format)                       buy/messages#update
                           DELETE /users/:user_id/messages/:id(.:format)                       buy/messages#destroy

Так что проблема в том, что я не уверен, почему поддомен 'buy' закрадывается. form_for должен использовать user_messages_path, а не user_buy_messages_path


PS:

Модель:

class Buy::Message < ActiveRecord::Base
  belongs_to :sender, class_name: '::User'
  belongs_to :receiver, class_name: '::User'
end

1 Ответ

1 голос
/ 08 марта 2012

Вы можете принудительно ввести URL-адрес вашей формы: для: URL-адрес

<%= form_for [@user,@message], :url => user_messages_path do |f| %>
...