Ruby on rails 简单表单未发布到DB Rails

Ruby on rails 简单表单未发布到DB Rails,ruby-on-rails,Ruby On Rails,我有一个简单的表格,如下所示 <% title("Home Page") %> <h1><i class="fa fa-home"></i> Add Event <small>views/pages/home.html.erb</small></h1> <div class="row"> <%= simple_form_for(@newevent) do |f| %> <

我有一个简单的表格,如下所示

<% title("Home Page") %>
<h1><i class="fa fa-home"></i> Add Event <small>views/pages/home.html.erb</small></h1>
<div class="row">
  <%= simple_form_for(@newevent) do |f| %>
     <%= f.input :eventname, required: true %>
     <%= f.input :eventdate %>
     <%= f.input :eventimage %>
     <%= f.button :submit %>
  <% end %>
</div>

添加事件视图/pages/home.html.erb
我的控制器是这个

class AddController < ApplicationController
  def index
    @newevent = Newevent.new
  end
end
class AddController
这是我的模型

class Newevent < ActiveRecord::Base
  has_one :event
  def event_params
      params.require(:newevents).permit(:eventname, :eventdate, :eventimage)
    end
end
classnewevent

你知道为什么这样不行吗?我没有尝试添加任何pry或byebugs,因为我还不能100%确定如何使用它们。

您的代码中有几个错误

首先,您将
事件参数
放置在模型中,但您的模型不知道
参数是什么。您可以访问控制器中的请求
params
,而不是模型中的请求

其次,视图中的表单可能会发送到创建操作(因为这是Rails中针对新对象的表单的默认设置。不仅控制器中没有创建操作,而且没有证据表明它有路由,也没有执行模型创建的代码

最后但并非最不重要的一点是,您永远不会访问控制器中的请求参数

你只是把几行代码粘在一起,假装它们能神奇地工作,但从代码上看,你似乎根本不知道Rails是如何工作的

在继续使用应用程序之前,我鼓励您从基础开始,阅读一本关于Ruby的书和一本关于Rails的书,以便您在尝试使用它之前对该语言和框架的工作原理有一个基本的了解


另外,在了解主框架的工作原理之前,不要引入额外的复杂性(如简单表单插件),否则调试问题将更加复杂。

资源丰富

首先,您需要欣赏以下内容:

您当前正在使用以下各项:

class AddController < ApplicationController
  def index
    @newevent = Newevent.new
  end
end
#config/routes.rb
resources :events

#app/controllers/events_controller.rb
class EventsController < ActionController::Base
   def new
       @event = Event.new
   end
   def create
       @event = Event.new event_params
       @event.save
   end
end
这将使您能够创建以下视图:

#app/views/events/new.html.erb -> yoururl.com/events/new
<%= simple_form_for(@event) do |f| %>
     <%= f.input :name, required: true %>
     <%= f.input :date %>
     <%= f.input :image %>
     <%= f.submit %>
<% end %>

#app/views/events/show.html.erb
<%= @event.name %>

表格

第三,您需要确保您的表单正确提交


我认为您需要将
更改为
。这将创建正确的HTML表单元素,这些元素应正确提交。

您的代码看起来不正确,请检查此项。
#app/views/events/new.html.erb -> yoururl.com/events/new
<%= simple_form_for(@event) do |f| %>
     <%= f.input :name, required: true %>
     <%= f.input :date %>
     <%= f.input :image %>
     <%= f.submit %>
<% end %>

#app/views/events/show.html.erb
<%= @event.name %>
#app/models/event.rb
class Event < ActiveRecord::Base
end