Ruby 2.1.5 on Rails 4.2.0:
我有两个目录。一个目录是一个名为' inqueries'的rails-generate脚手架。另一个目录名为' welcome',它只包含一个名为index.html.erb的登陆页面。查询形式起作用&只要我使用实际' inquery'中的视图,我就会提交罚款。支架/目录。
我可以使用以下方法在index.html.erb着陆页上呈现inquery _form:
<%= render partial: "inqueries/form", locals: {inquery: @Inquery} %>
然而,这只是呈现形式。当我点击提交按钮时,没有提交错误,flash消息或查询。它是完全不动作的,包括我的rails终端。
如何在我的目标网页上正确使表单正常工作?
这是我的welcome_controller.rb文件。此控制器处理着陆页面,我试图呈现查询脚手架的形式:
class WelcomeController < ApplicationController
def index
@inquery = Inquery.new
render layout: false
end
end
这是我在inqueries_controller.rb中新生成的rails scaffold生成的方法:
def new
@inquery = Inquery.new
respond_with(@inquery)
end
对不起,这是Inquery _form本身:
<%= form_for(@inquery) do |f| %>
<div class="form-group col-lg-4">
<%= f.label t('.name') %><br>
<%= f.text_field :name, class: "form-control" %>
</div>
<div class="form-group col-lg-4">
<%= f.label t('.email') %><br>
<%= f.text_field :email, class: "form-control" %>
</div>
<div class="form-group col-lg-4">
<%= f.label t('.phone') %><br>
<%= f.text_field :phone, class: "form-control" %>
</div>
<div class="clearfix"></div>
<div class="form-group col-lg-12">
<%= f.label t('.message') %><br>
<%= f.text_area :message, rows: 8, class: "form-control"%>
</div>
<%= f.submit t('.submit'), class: "btn btn-primary" %>
<% end %>
编辑2:我看到有一些关于逻辑的建议。我简化了部分只是为了看看我是否可以让它工作,它仍然没有在其目录之外正确提交。我是rails的新手,我是否需要在我调用它的第二个目录中呈现一个新动作?
答案 0 :(得分:1)
你的部分有两种形式。提交查询#create的是一个没有提交按钮的空表单,另一个没有操作的包含文本字段和提交操作。
form_for标签将创建html标签,您无需再次指定它们。
提示 - 切换到haml。你永远不会回头看erb:)
这应该有效(未经测试) -
<%= form_for(@inquery) do |f| %>
<div id="error_explanation">
<% if @inquery.errors.any? %>
<h2>
<%= pluralize(@inquery.errors.count, "error") %> prohibited this inquery from being saved:
</h2>
<ul>
<% @inquery.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
</div>
<br />
<div class="col-lg-12">
<div class="form-group col-lg-4">
<%= f.label t('.name') %><br>
<%= f.text_field :name, class: "form-control" %>
</div>
<div class="form-group col-lg-4">
<%= f.label t('.email') %><br>
<%= f.text_field :email, class: "form-control" %>
</div>
<div class="form-group col-lg-4">
<%= f.label t('.phone') %><br>
<%= f.text_field :phone, class: "form-control" %>
</div>
<div class="clearfix"></div>
<div class="form-group col-lg-12">
<%= f.label t('.message') %><br>
<%= f.text_area :message, rows: 8, class: "form-control"%>
</div>
<div class="form-group col-lg-12">
<input type="hidden" name="save" value="contact">
<%= f.submit t('.submit'), class: "btn btn-primary" %>
</div>
</div>
<% end %>
答案 1 :(得分:0)
想出来。愚蠢的错误, 我的欢迎页面是一个我没有完全消失的引导主题。我导入了一些我认为阻止表单的不必要的javascript文件。