Form_tag提交rails

时间:2013-07-22 16:26:44

标签: ruby-on-rails forms devise

所以我一直在使用带有ruby on rails的web应用程序。我的主页上有表单标签,但是当我单击提交时,它无法将信息保存到访客或当前用户(我正在使用设计)并重定向到其他页面。该应用程序没有给我任何错误,它只是不会接收信息。提前感谢您的帮助!

    class PageController < ApplicationController
  def home
    unless @button.nil?
      @location = Place.create(:address => params[:place], :phone_number  => params[:phone], :name  => params[:title], :status => "not_purchased", :user_id => current_or_guest_user.id)
      @location.save!
      if @location.save && !@location.address.nil?
        redirect_to places_path
      end
    end
  end

  def index
  end


  def show
    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @location }
    end
  end

  def new
  end


  def create
    unless @button.nil?
      @location = Place.create(:address => params[:place], :phone_number  => params[:phone], :name  => params[:title], :status => "not_purchased", :user_id => current_or_guest_user.id)
      @location.save!
      if @location.save
        format.html { redirect_to places_path}
        format.json { render action: 'index', status: :created, location: places_path }
      else
        format.html { render action: 'new' }
        format.json { render json: @location.errors, status: :unprocessable_entity }
      end
    end
  end


  def map
  end



end

页/ home.html.erb

<section id="content">
  <div class="container">
    <div class="inside">
      <div class="wrapper row-1">
        <div class="box col-1 maxheight">
          <div class="border-right maxheight">
            <div class="border-bot maxheight">
              <div class="border-left maxheight">
                <div class="left-top-corner maxheight">
                  <div class="right-top-corner maxheight">
                    <div class="right-bot-corner maxheight">
                      <div class="left-bot-corner maxheight">
                        <div class="inner">
                          <h3>Check Availability</h3>
                          <section style="border: 1px solid black;padding: 10px; margin:10px">
                            <h5>Add your site(s)</h5>
                            <b><%= field_set_tag '' do %> </b>
                                  <%= form_tag do %>
                                      <p>
                                        <%= label_tag 'title', "Name of Site"%>
                                        <%= text_field_tag 'title', nil, :placeholder => "Enter your site name", :size => 40%><br/>
                                      </p>
                                      <p>
                                        <%= label_tag 'place', "Address"%>
                                        <%= text_field_tag 'place', nil, :placeholder => "Enter your  address", :size => 40%><br/>
                                      </p>
                                      <p>
                                        <%= label_tag 'phone', "Phone number"%>
                                        <%= text_field_tag 'phone', nil, :placeholder => "Enter your phone number", :size => 40%><br/>
                                      </p>
                                      <p><span><span><%=@button = submit_tag "Add me!", data: {:confirm => "Are you sure?"}%></span></span></p>
                                  <% end %>
                              <% end %>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="clear"></div>
    </div>
  </div>
  </div>
  </div>
</section>

2 个答案:

答案 0 :(得分:0)

您可以在表单之前删除field_set_tag。不确定那个目的是什么,因为你没有传递任何东西。

然后在你的form_tag中添加:

<%= form_tag @location do %>

其中@location是表单的对象。

同样从您的家庭控制器中删除:

 @location = Place.create(:address => params[:place], :phone_number  => params[:phone], :name  => params[:title], :status => "not_purchased", :user_id => current_or_guest_user.id)
  @location.save!

你不是在那里创造的。您是在create操作中创建的。因此,在您的#home操作中,只需实例化@location

 @location = Place.new user_id: current_or_guest_user.id

答案 1 :(得分:0)

在您的页面/ home.html.erb视图中,form_tag需要一个指向控制器操作的网址。它的空白ATM因此默认为POST动作,但它没有张贴到任何东西。尝试:

<%= form_tag @location do %>

此外,@button实例变量总是等于nil,因为它似乎没有在任何地方初始化。