Rails将数据从一种形式复制到另一种形式

时间:2016-03-05 02:31:53

标签: html ruby-on-rails forms

我有一个搜索框,用于搜索guests的记录。如果出现零结果,我有一个按钮,可以将用户带到guests/new页面,其中找到相同的搜索参数供用户输入以创建新记录。是否可以从搜索框中复制数据并自动填充新的客人表单?

搜索框:

<%= 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 %>

新的访客表单(来宾/ / pure.html.erb上包含来宾/ _form.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 %>

2 个答案:

答案 0 :(得分:0)

在表单中,您应该能够根据查询字符串中传递的内容设置默认值as params。这是一个可以在整个表单上复制的示例。

<%= f.text_field :first_name, :value => params[:first_name] if params[:acction] == 'new' %>

我希望这有助于

快乐黑客

答案 1 :(得分:0)

是的,你可以做到。它应该花费更多的时间。

你必须使用JS或JQuery。

$('button').click(function(){
var text = $('input[id="search"]').val();
$('input[id="guest"]').val(text);
console.log(text);
})

我在这个链接中做了一些例子:Jsfiddle