Ruby on Rails路由错误
问题描述:
我对轨道上的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 %>
答
根据您回应的第一个注释,你可能需要从ApplicationController
继承,这就是params
得到引擎盖下定义。
在构建应用程序时,所有控制器都需要以某种方式从ApplicationController
继承。有时,这意味着嵌套控制器只会从继承自ApplicationController
的父控制器继承。
例如,
class ParentController < ApplicationController
end
class Parent::ChildController < ParentController
end
是'EventsController'从'ApplicationController'继承? – MaicolBen
不,它不应该..应该(对于迟到的回复抱歉!)? –
你可以发布从视图传递给控制器的参数吗?它将在日志中。另外,发布事件表格 – Pramod