URL-адреса в файлах просмотра почтовых программ с использованием пространств имен и пользовательских действий - PullRequest
0 голосов
/ 11 февраля 2011

Я использую Ruby on Rails 3, и я хотел бы использовать URL в файлах представления почтовых программ с пространствами имен и пользовательских действий .Я прочитал это , но у меня все еще есть проблемы с его реализацией.

В routes.rb У меня есть:

namespace "users" do
  resources :accounts do
    member do
      get 'my_action_name'
      post 'my_action_name'
    end
  end
end

В users_mailer.rb У меня есть:

class Users::Accounts < ActionMailer::Base
  default_url_options[:host] = "test_name_site.com"

  def account_delete(account)
    @account = account
    @action_url = users_account_url(:controller => "users/accounts", :action => "my_action_name")
    ...
  end
end

Когда в контроллере я пытаюсь сделать это:

@account = Users::Account.find(params[:id])
Users::Accounts.account_delete(Users::Account.find_by_id(@account.id)).deliver

Я получаю эту ошибку:

ActionController::RoutingError (No route matches {:action=>"my_action_name", :controller=>"users/accounts"})

Как я могу решить эту проблему?


В users_mailer.rb Я пробовал также

# the difference is: from 'users_account_url' to 'users_accounts_url'
@action_url = users_accounts_url(:controller => "users/account_authentications", :action => "confirm_account_authentication_delete")

# the difference is: from 'users_account_url' to 'url_for'
@action_url = url_for(:controller => "users/account_authentications", :action => "confirm_account_authentication_delete")

, но это не работает.

1 Ответ

0 голосов
/ 11 февраля 2011

Вы не указываете идентификатор записи в users_account_url, попробуйте это

@action_url = my_action_name_users_account_url(account)

http://0.0.0.0:3000/users/accounts/1/my_action_name

Руководство по маршрутизации

...