2013-11-28 5 views
0

Ive были следующие несколько рельсов направляющие и им пытаются в настоящее время реализовать что-то на мой собственный для проекта им делать и врезался в препятствие на первое препятствиеNoMethodError новичок Rails

Я получаю эту ошибку при попытке загрузить страница

ActionController :: UrlGenerationError в StepOne # Войти Показаны /Users/rogan/Sites/authImp/app/views/step_one/login.html.erb где строка # 3 поднял:

нет соответствующего маршрута {: action => "show",: controller => "step_one"} отсутствуют необходимые ключи: [: id] Извлеченный источник (вокруг линии # 3):

<%= form_for url: step_one_path do %> 
form stuff... 

тогда мой step_one_controller.rb

class StepOneController < ApplicationController 
def new 

    end 



    def create 
    user = User.authenticate(params[:email], params[:password]) 
    if user 
     pincode = generatePin 
     puts "one use pin.#{pincode}" 
     redirect_to "step_two" 
    else 
     flash.now.alert = "Invalid email or password" 
     render "new" 
    end 
    end 
end 

это адаптер из системы авторизации я видел в руководстве, которое используется SessionsController.rb и form_for URL: sessions_path

но мои простые изменения, похоже, сломали его, я тоже посмотрел на свои маршруты, и все они выглядят в порядке

Редактировать: heres is my routes править править: все изменилось к step_one и извлекал «S» как это было предложено, я теперь получить

NoMethodError in StepOne#login 
undefined method `model_name' for Hash:Class 
<%= form_for url: step_one_path do %> 

так от одной задачи к другой!

AuthImp::Application.routes.draw do 

    resources :users 
    resources :sessions 
    resource :step_one 

    get "users/:id" => "users#show" 
    get "sign_up" => "users#new" 
    get "log_in" => "step_one#login" 
    get "step_two" => "sessions#new" 
    get "log_out" => "sessions#destroy", :as => "log_out" 

тогда мои грабли маршруты следующего

 root to: "welcome#index" 

     users GET /users(.:format)    users#index 
       POST /users(.:format)    users#create 
    new_user GET /users/new(.:format)   users#new 
    edit_user GET /users/:id/edit(.:format) users#edit 
     user GET /users/:id(.:format)   users#show 
       PATCH /users/:id(.:format)   users#update 
       PUT /users/:id(.:format)   users#update 
       DELETE /users/:id(.:format)   users#destroy 
    sessions GET /sessions(.:format)   sessions#index 
       POST /sessions(.:format)   sessions#create 
    new_session GET /sessions/new(.:format)  sessions#new 
edit_session GET /sessions/:id/edit(.:format) sessions#edit 
     session GET /sessions/:id(.:format)  sessions#show 
       PATCH /sessions/:id(.:format)  sessions#update 
       PUT /sessions/:id(.:format)  sessions#update 
       DELETE /sessions/:id(.:format)  sessions#destroy 
    step_one POST /step_one(.:format)   step_ones#create 
new_step_one GET /step_one/new(.:format)  step_ones#new 
edit_step_one GET /step_one/edit(.:format)  step_ones#edit 
       GET /step_one(.:format)   step_ones#show 
       PATCH /step_one(.:format)   step_ones#update 
       PUT /step_one(.:format)   step_ones#update 
       DELETE /step_one(.:format)   step_ones#destroy 
       GET /users/:id(.:format)   users#show 
     sign_up GET /sign_up(.:format)   users#new 
     log_in GET /log_in(.:format)   step_one#login 
    step_two GET /step_two(.:format)   sessions#new 
     log_out GET /log_out(.:format)   sessions#destroy 
     root GET /       welcome#index 

ответ

0
<%= form_tag step_one_path do |f| %> 

была форма тега необходимо, я собирался о неправильно

спасибо за всю помощь

0

Похоже, Rails ожидает, чтобы передать в ид вашего step_one_path, поэтому form_for должен выглядеть следующим образом:

<%= form_for url: step_one_path(@user.id) do %> 

Где @ user.id будет идентификатором пользователя, с которым связана форма. Надеюсь, это поможет. Если нет, укажите файл routes.rb.

+0

Я включил свои маршруты, было бы бессмысленно передавать идентификатор пользователя, который не знает на данный момент времени – rogy

+0

Можете ли вы включить остальные index.htmt.erb? И выход грабли? – dphaener

1

ваша проблема в обозначении я думаю, resources :step_one предполагает, что вы определить StepOnesController (множественное число), не StepOneController

Таким образом, вы должны либо переименовать контроллер или использовать resource :step_one маршрут (без s в конце)

+0

вы правы, похоже, но это дало мне еще одну проблему, по крайней мере где-то ... я отредактировал OP – rogy