В моем поддомене "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