0

所以我一直在使用 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>
4

2 回答 2

0

在您的 page/home.html.erb 视图中,form_tag需要一个指向控制器操作的 URL。它的 ATM 是空白的,所以它默认为 POST 操作,但它没有发布任何东西。尝试:

<%= form_tag @location do %>

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

于 2013-07-22T16:38:36.267 回答
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
于 2013-07-22T16:35:49.837 回答