Rails将数据从一种表单复制到另一种形式
问题描述:
我有一个搜索框,用于搜索guests
的记录。如果出现零结果,我会看到一个按钮,它将用户带到guests/new
页面,其中可以找到用户输入的相同参数以创建新记录。是否可以从搜索框中复制数据并自动填写新的访客表单?Rails将数据从一种表单复制到另一种形式
搜索框:
<%= form_tag(guests_path, :method => "get", class: "navbar-form", id: "search-form") do %>
<div class="input-append col-sm-10">
<div class="row">
<div class="col-sm-4">
<p><%= text_field_tag :search_first_name, params[:search_first_name], placeholder: "First Name", style: "width:100%;" %></p>
<p><%= text_field_tag :search_last_name, params[:search_last_name], placeholder: "Last Name", style: "width:100%;" %></p>
</div>
<div class="col-sm-4">
<p><%= text_field_tag :search_email, params[:search_email], placeholder: "Email Address", style: "width:100%;" %></p>
<p><%= text_field_tag :search_phone, params[:search_phone], placeholder: "Phone Number", style: "width:100%;" %></p>
</div>
<div class="col-sm-4">
</div>
<%= submit_tag 'Search Guests' %>
</div>
</div>
<% end %>
新的客户形式(客人/包括在页面客人_form.html.erb/new.html.erb)
<%= form_for(@guest) do |f| %>
<% if @guest.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@guest.errors.count, "error") %> prohibited this guest from being saved:</h2>
<ul>
<% @guest.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="form-horizontal">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">First Name:</label>
<div class="col-sm-10">
<%= f.text_field :first_name %>
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">Last Name:</label>
<div class="col-sm-10">
<%= f.text_field :last_name %>
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">Email:</label>
<div class="col-sm-10">
<%= f.text_field :email %>
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">Phone Number:</label>
<div class="col-sm-10">
<%= f.text_field :phone %>
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label"></label>
<div class="col-sm-10">
<%= f.submit %>
</div>
</div>
</div>
<% end %>
答
在你的表格,你应该能够根据查询字符串中传入的参数将其设置为参数。这是一个可以在表单中复制的例子。
<%= f.text_field :first_name, :value => params[:first_name] if params[:acction] == 'new' %>
我希望这有助于
快乐黑客
答
是的,你可以做到这一点。它应该花更少的时间。
您必须使用JS或JQuery。
$('button').click(function(){
var text = $('input[id="search"]').val();
$('input[id="guest"]').val(text);
console.log(text);
})
我已经在这个环节上做小例子:Jsfiddle
这似乎并不奏效,并携带了适当的,因为我的表单标签不符合新的形式标记在HTML –
输出的这' ' 应该是这样的'' – 7urkm3n
js因为某些原因不能在整个页面上工作加载 –