所以我一直在使用带有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>
答案 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,因为它似乎没有在任何地方初始化。