2016-03-05 3 views
0

У меня есть окно поиска, которое ищет записи для 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 %> 

ответ

0

В вашей форме вы должны быть в состоянии для установки значения по умолчанию, основанного на том, что оно передано в строке запроса в качестве параметров. Это пример, который вы можете реплицировать по всей форме.

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

Я надеюсь, что это помогает

Удачного хака

0

Да, Вы можете это сделать. Это займет немного больше времени.

Вы должны использовать JS или JQuery.

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

Я сделал небольшой пример в этой ссылке: Jsfiddle

+0

Это, кажется, не работает и перенос правильно, потому что мои теги формы Dont соответствовать новой форме тегов –

+0

Вывод этого в HTML ' <% = text_field_tag: search_first_name, params [: search_first_name]%> ' должно выглядеть следующим образом:' ' – 7urkm3n

+0

js не работает по какой-то причине на странице перезагрузить –

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