当我放置before_action时,设计路由错误:authenticate_user

时间:2015-05-27 17:03:27

标签: ruby-on-rails-4 devise

我有一个会话列表(不是设计会话,是电影会话),我有一个链接到这个会话的新报价是一个来自用户的嵌套资源。要购买(创建要约),必须记录用户(因为创建要约需要用户的参考)。当我把before_action:authenticate_user!在session_controller(再次影院会议而不是设计会话)中我收到此错误:

NoMethodError in Devise::Sessions#new
 Showing /home/ubuntu/workspace/app/views/users/sessions/new.html.erb where line #10 raised:

undefined method `name' for #<ActionView::Helpers::FormBuilder:0x000000034bc708>

这是我的routes.rb:

 Rails.application.routes.draw do
  resources :tickets
  resources :offers
  resources :prices
  resources :movies
  devise_for :sessions, controllers: {
   new: 'session/new'
  }
  resources :sessions do
    resources :offers
  end
  resources :rooms
  resources :seats
  resources :cinemas
    get 'welcome/index'
  devise_for :users, controllers: {
     registrations: 'users/registrations'
  }
  root 'welcome#index'
 end

这是我的session_controller(电影院会议,不是设计):

class SessionsController < ApplicationController
  before_action :authenticate_user!
  before_action :set_session, only: [:show, :edit, :update, :destroy]
  respond_to :html
  ...

new.html.erb(session_controller):

 <h1>New session</h1>
 <%= render 'form' %>
 <%= link_to 'Back', sessions_path %>

_form.erb(session):

<%= form_for(@session) do |f| %>
  <% if @session.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@session.errors.count, "error") %> prohibited this session from being saved:</h2>

      <ul>
      <% @session.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :cinema_id %><br>
    <%= f.collection_select :cinema_id, Cinema.all, :id, :nameCine %>
  </div>

  <div class="field">
    <%= f.label :room_id %><br>
    <%= f.collection_select :room_id, Room.all, :id, :description %>
  </div>

  <div class="field">
    <%= f.label :movie_id %><br>
    <%= f.collection_select :movie_id, Movie.all, :id, :title %>
  </div>

  <div class="field">
    <%= f.label :bgn_date %><br>
    <%= f.datetime_select :bgn_date %>
  </div>
  <div class="field">
    <%= f.label :end_date %><br>
    <%= f.datetime_select :end_date %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

1 个答案:

答案 0 :(得分:0)

这是新手的错误,我正在寻找设计注册问题。但错误是在(设计)session / new的视图中,我已经自动生成了该名称的字段,但登录时不使用,只有电子邮件和传递字段。 我从(设计)会话中删除了名称字段/新的外观就像魅力一样。