Ruby on rails 从静态页面呈现部分内容
我试图在我的欢迎主页中呈现一个部分(我使用高压宝石创建它), 我的组窗体,用户可以在其中创建新组 到目前为止,我所尝试的给了我以下错误 表单中的第一个参数不能包含nil或为空Ruby on rails 从静态页面呈现部分内容,ruby-on-rails,high-voltage,Ruby On Rails,High Voltage,我试图在我的欢迎主页中呈现一个部分(我使用高压宝石创建它), 我的组窗体,用户可以在其中创建新组 到目前为止,我所尝试的给了我以下错误 表单中的第一个参数不能包含nil或为空 = form_for @group do |f| .fieldset - if @group.errors.any? .error_messages 我的路由是这样配置的 Giraffle::Application.routes.draw do get 'sign_up',
= form_for @group do |f|
.fieldset
- if @group.errors.any?
.error_messages
我的路由是这样配置的
Giraffle::Application.routes.draw do
get 'sign_up', to: 'groups#new', as: 'sign_up'
get 'sign_in', to: 'sessions#new', as: 'sign_in'
delete 'sign_out', to: 'sessions#destroy', as: 'sign_out'
resources :sessions
resources :members
resources :groups
resources :events
resources :event_sets
root :to => 'high_voltage/pages#show', id: 'welcome'
end
因此,当我尝试加载主页时,它会直接进入欢迎页面,并因上述错误而崩溃
我想我知道问题是什么。。。但我不知道如何解决它。我正在尝试呈现表单,但由于“group”变量从未初始化,因此会抛出此错误
我的代码
views/pages/welcome.html.slim
row id="div"
.small-4 id="innerDiv"
.row
.small-4.columns align="center"
img src="groupIcon.png" id="mainImg"
.large-6.large-offset-2.columns
h1 Sign Up
= render :partial => '/groups/form'
= form_for @group do |f|
.fieldset
- if @group.errors.any?
.error_messages
h2 Form is invalid
ul
- @group.errors.full_messages.each do |message|
li= message
.row
.small-12.columns
= f.text_field :name, placeholder: "Name"
.row
.small-12.columns
= f.text_field :group_id, placeholder: "Group"
.row
.small-12.columns
= f.password_field :password, placeholder: "Password"
.row
.small-12.columns
= f.password_field :password_confirmation, placeholder: "Confirm Password"
.row
.small-3.columns
.actions= f.submit 'Sign Up', class: 'button radius'
视图/组/_form.html.slim
row id="div"
.small-4 id="innerDiv"
.row
.small-4.columns align="center"
img src="groupIcon.png" id="mainImg"
.large-6.large-offset-2.columns
h1 Sign Up
= render :partial => '/groups/form'
= form_for @group do |f|
.fieldset
- if @group.errors.any?
.error_messages
h2 Form is invalid
ul
- @group.errors.full_messages.each do |message|
li= message
.row
.small-12.columns
= f.text_field :name, placeholder: "Name"
.row
.small-12.columns
= f.text_field :group_id, placeholder: "Group"
.row
.small-12.columns
= f.password_field :password, placeholder: "Password"
.row
.small-12.columns
= f.password_field :password_confirmation, placeholder: "Confirm Password"
.row
.small-3.columns
.actions= f.submit 'Sign Up', class: 'button radius'
编辑
控制器/组\u controller.rb
class GroupsController < ApplicationController
load_and_authorize_resource
before_action :set_group, only: [:edit, :update, :destroy]
before_action :authorize, except: [:new, :create]
def new
@group = Group.new
end
def edit
end
def create
@group = Group.new(group_params)
if @group.save
redirect_to root_url, notice: 'Signed Up!'
else
render 'new'
end
end
def update
if @group.update(group_params)
redirect_to root_url, notice: 'Group Info was successfully updated.'
else
render action: 'edit'
end
end
private
def set_group
@group = Group.find(params[:id])
end
def group_params
params.require(:group).permit(:group_id, :name, :password, :password_confirmation)
end
end
类组控制器
我设置了一个高压演示应用程序,其中包含一个用于创建“查询”的表单
以下是高级步骤:
创建将在视图中使用的表单:
<%= simple_form_for resource, html: { novalidate: true }, remote: true do |f| %>
<%= f.input :name %>
<%= f.input :email %>
<%= f.input :comments, as: :text %>
<%= f.button :submit, value: 'Submit' %>
<% end %>
通过使用.js.erb
文件,我们可以从控制器端点向静态页面返回成功消息或错误
<% if @inquiry.valid? %>
$('#inquiry_form').html('<h2>Thank you for contacting us!</h2>');
<% else %>
$('#inquiry_form').html('<%= j render 'inquiry_form', resource: @inquiry %>');
<% end %>
$(“#查询表格”).html('谢谢您联系我们!');
$(“#查询表格”).html(“”);
如果请求有效,则返回“success”消息;如果请求无效,则返回带有错误的表单。看起来
@group
未在控制器操作中设置。请同时发布您的控制器代码。您正试图从WelcomeController
调用此代码,因此需要在WelcomeController
操作中设置@group=group。新建。实际上,“欢迎”是一个静态页面。。。所以它不需要控制器:/(我在本页使用高压gem)。我稍微改变了主要问题,我认为最好是创建一个控制器,并在控制器操作中设置@group
,而不是使视图混乱。看一看:您的问题是,您试图创建一个静态页面,但它需要在服务器端创建动态信息,即@group in views/groups/_form.html.slim视图。查看(并发布到您的问题)HighVoltage创建的html中的表单定义。