2013-07-22 4 views
0

Так что я работал над веб-приложением с рубинами на рельсах. У меня есть теги формы на моей домашней странице, но когда я нажимаю кнопку «Отправить», он не может сохранить информацию гостю или текущему пользователю (я использую его) и перенаправлять на другую страницу. Приложение не дает мне никаких ошибок, оно просто не будет принимать информацию. Заранее спасибо за вашу помощь!Form_tag submit rails

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 && [email protected]? 
     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><%[email protected] = 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> 

ответ

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 
0

На ваш взгляд страница/home.html.erb, form_tag требует URL, который указывает на действие контроллера. Его пустой банкомат, поэтому он по умолчанию выполняет действие POST, но он ничего не публикует. Попробуйте:

<%= form_tag @location do %> 

Кроме того, что переменная экземпляра @button всегда будет равна нулю, поскольку это, кажется, не быть инициализирован в любом месте.

Смежные вопросы