Как мне добавить маршрут, который отображается на URL-адрес пули, сгенерированный гемом stringex в ruby ​​на рельсах 3.1? - PullRequest
1 голос
/ 05 января 2012

Кажется простым, в моей модели у меня есть:

class CustomerAccount < ActiveRecord::Base

  acts_as_url :name

  def to_param
    url # or whatever you set :url_attribute to
  end

end

И в моем контроллере у меня есть:

class CustomerAccountsController < ApplicationController
  def show # dashboard for account, set as current account
    @account = CustomerAccount.find_by_url params[:id]
    no_permission_redirect if !@account.has_valid_user?(current_user)
    set_current_account(@account)

    @latest_contacts = Contact.latest_contacts(current_account)
  end
end

То, что в настоящее время находится в route.rb:

  resources :customer_accounts, :path => :customer_accounts.url do
    member do
      get 'disabled'
      post 'update_billing'
    end
  end

Это дает мне следующую ошибку, когда я пытаюсь сгенерировать данные с помощью rake db: seed, или, по крайней мере, я предполагаю, что запись в маршрутах - это то, что делает.

undefined method `url' for :customer_accounts:Symbol

Так чтомне нужно сделать, чтобы настроить маршрут?Я хотел бы, чтобы http://0.0.0.0/customeraccountname отобразился в представлении для страницы учетной записи клиента.

ОБНОВЛЕНИЕ:

Вот код, который в конечном итоге работал в rout.rb,который я обнаружил после просмотра примеров в ответе ниже:

  resources :customer_accounts, :path => '/:id' do
    root :action => "show"
    member do
      get 'disabled'
      post 'update_billing'
    end
  end

1 Ответ

2 голосов
/ 05 января 2012

Если вы хотите настроить его так, чтобы у вас был маршрут, подобный тому, который вы показываете, сделайте это:

get '/:id', :to => "customer_accounts#show"

Если вы хотите действия disabled и update_billing под этим:

get '/:id/disabled', :to => "customer_accounts#disabled"
post '/:id/update_billing', :to => "customer_accounts#update_billing"

В качестве альтернативы (и много аккуратнее):

scope '/:id' do
  controller "customer_accounts" do
    root :action => "show"
    get 'disabled'
    get 'update_billing'
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...