我呈现的部分' _form'出现,但没有提交

时间:2015-04-15 16:15:40

标签: ruby-on-rails ruby forms ruby-on-rails-4 partials

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的新手,我是否需要在我调用它的第二个目录中呈现一个新动作?

2 个答案:

答案 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文件。

相关问题