2012-05-04 1 views
0

Я создаю приложение cms для НПЗ, и я пытаюсь добавить альтернативный журнал на экране, который будет потреблять веб-сервис .NET. Однако, хотя код для потребления услуги был достаточно прост, я не могу заставить рельсы или нефтеперерабатывающие заводы признать, что представление для него действительно существует, и, таким образом, никакой маршрут, который я вхожу в URL-адрес, приведет меня к виду для альтернативного войдите в, и я не могу понять, почему. Файл для моего зрения находится в /views/sessions/dotnet.html.erb и в настоящее время мой sessions_controller.rb содержит определение методаДобавление нового действия страницы в сеансы scaffold в Refinery

class SessionsController < ::Devise::SessionsController 
    . 
    . 
    . 
    def create 
    super 
    rescue ::BCrypt::Errors::InvalidSalt, ::BCrypt::Errors::InvalidHash 
     flash[:error] = t('password_encryption', :scope => 'users.forgot') 
     redirect_to new_user_password_path 
    end 

    def dotnet 
    . 
    . 
    . 
    end 
    . 
    . 
    . 
end 

и routes.rb файл без комментариев строк выглядит следующим образом:

Quicksmile::Application.routes.draw do 
    resources :sessions 

    resources :dotnetwrappers 

    match "/" => redirect("/new-practices") 

end 

Я попытался методы here и here, но ни один из них работал. Как настроить его так, чтобы на самом деле был URL-адрес, соответствующий файлу /views/sessions/dotnet.html.erb?

+0

Ну, я узнал, что мои маршруты не работают, потому что любые маршруты, которые конфликтуют с файлом маршрутизации в самообслуживании cms gem, становятся более сложными при запуске приложения (в отличие от другого). Теперь мне просто нужно выяснить, как это исправить. –

ответ

1

Не похоже, что вы действительно добавили маршрут для SessionController # dotnet.

Вам нужно что-то вроде:

Quicksmile::Application.routes.draw do 
    resources :sessions 
    get :dotnet_login => "sessions#dotnet", :as => "dotnet_login" 

    # ... 
end 

Затем вы можете использовать URL-хелперы main_app.dotnet_login_path и main_app.dotnet_login_url внутри кода.

Более подробную информацию можно найти на странице Rails Routing Guide.

+0

Не работает. Я получаю сообщение о том, что lib/active_support/whiny_nil.rb: 48: in 'method_missing ': undefined method' to_sym' для nil: NilClass (NoMethodError) –

+0

Попробуйте заменить эту третью строку: 'get '/ dotnet_login' => «session # dotnet»,: as => «dotnet_login» ' –

+0

Ну, это сработало. После перехода на/dotnet_login я попал на страницу с сообщением «Не удалось найти графическое представление для пути»/dotnet_login ». Может быть, вы забыли обернуть свой маршрут внутри блока области видимости? Например: devise_scope: пользователь соответствует«/some/route » "=>" some_devise_controller "end" –