2017-03-06 238 views
1

我对轨道上的ruby非常陌生!我基本上正在尝试创建一个允许组织创建活动的应用程序!到目前为止,用户能够创建一个组织,但是当他们试图创建一个事件,我得到这个错误:路由错误未定义的局部变量或方法`PARAMS'为EventsController:Ruby on Rails路由错误

我看过了一切,试图找到类似的东西遍布堆栈溢出,如果您有任何建议,请让我知道!

事件控制器: before_action @organization = Organization.find(PARAMS [:的organization_ID])

def index 
    @events = @organization.events 
    end 

    def show 
    @event = Event.find(params[:id]) 
    end 


    def new 
    @event = Event.new 
    end 

    def create 
    @event = Event.new(event_params) 
    @event.organization = @organization 

    if @event.save 
     redirect_to organizations_path 
    else 
     render 'new' 
     flash[:notice] = "Event not saved" 
    end 
    end 

    def edit 
    @event = Event.find(params[:id]) 
    end 

    def destroy 
    @event = Event.find(params[:id]) 
    @event.destroy 
    redirect_to organizations_url 
    end 

    private 
    def event_params 

    params.require(:event).permit(:user_id, :organization_id, :event_size, :date, :name, :description, :location) 

    end 

end 

组织控制器

def index 
    @organizations = Organization.all 
    # @organization = Organization.find(params[:id]) 

    end 

    def show 
    @organization = Organization.find(params[:id]) 
    @events = @organization.events 
    end 

    def new 
    @organization = Organization.new 
    end 

    def create 
    @organization = Organization.new(organization_params) 
    if @organization.save 
     redirect_to organizations_path 

    else 
     render "new" 
    end 
    end 

    private 
    def organization_params 
    params.require(:organization).permit(:organization_id, :name, :description, :location, :volunteer_position) 
    end 
end 

事件index.html.erb

<h1>Events index</h1> 

<% @events.each do |event| %> 

<div class="events_name"> 


    <p><%= event.name %></p> 
    <p><%= event.description %></p> 
    <p><%= event.location %></p> 
<br/> 
    <% end %> 

</div> 

路线

Rails.application.routes.draw do 

    root 'home#index' 
    resources :timeslots 
    resources :sessions, only: [:new, :create, :destroy] 
    resources :users 
    resources :home 
    resources :home, only: [:index] 
    resources :organizations do 
    resources :events 
    end 

形式事件

<%= form_for @event do |f| %> 

<div> 
<%= f.label :name %>: 
<%= f.text_field :name %><br /> 
</div> 
<div> 
<%= f.label :description %>: 
<%= f.text_field :description %><br /> 
</div> 
<div> 
<%= f.label :location %>: 
<%= f.text_field :location %><br /> 
</div> 
<div> 
    <div class="field"> 
    <%= f.label :date%> 
    <%= f.date_select :date, 
     { order: [:month, :day, :year], 
      prompt: [ day: 'Select day', month: 'Select month', year: 'Select year' ]} %> 
    </div> 

<br> 
<%= f.submit %> 
<% end %> 
+0

是'EventsController'从'ApplicationController'继承? – MaicolBen

+0

不,它不应该..应该(对于迟到的回复抱歉!)? –

+0

你可以发布从视图传递给控制器​​的参数吗?它将在日志中。另外,发布事件表格 – Pramod

回答

0

根据您回应的第一个注释,你可能需要从ApplicationController继承,这就是params得到引擎盖下定义。

在构建应用程序时,所有控制器都需要以某种方式从ApplicationController继承。有时,这意味着嵌套控制器只会从继承自ApplicationController的父控制器继承。

例如,

class ParentController < ApplicationController 
end 

class Parent::ChildController < ParentController 
end