【问题标题】:Form_tag submit railsForm_tag 提交 rails
【发布时间】:2013-07-22 16:26:43
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails forms devise


    【解决方案1】:

    您可能可以在表单之前摆脱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
    

    【讨论】:

      【解决方案2】:

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

      <%= form_tag @location do %>
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-09
        • 1970-01-01
        • 2018-03-19
        • 2015-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-06
        相关资源
        最近更新 更多