Я создал следующую SimpleForm для своего приложения Rails. Я хочу, чтобы кнопка отправки брала данные, выбранные в каждом из полей, и переносила их на следующий экран. Кто-нибудь знает, как я могу изменить свойство кнопки отправки SimpleForm? Прямо сейчас кажется, что это что-то создает? Я немного смущен тем, что это за действие по умолчанию.

<div class="infoheaders">1. Question
  <%= simple_form_for @category do |f| %> 
    <%= f.collection_select(:title, Category.all, :title, :title) %>
   <div class="grey-text-subheader">Device: (optional)</div>
    <%= f.check_box :Apple %> <%= f.label "Apple" %> &nbsp; &nbsp; 
    <%= f.check_box :iPhone %> <%= f.label "iPhone" %> &nbsp; &nbsp;  
    <%= f.check_box :iPad %> <%= f.label "iPad" %> &nbsp; &nbsp; 
    <%= f.check_box :Mac %> <%= f.label "Mac" %> &nbsp; &nbsp;  
    <%= f.check_box :Android %> <%= f.label "Android" %><br><br>
    <%= f.check_box :Samsung %> <%= f.label "Samsung" %> &nbsp; &nbsp;  
    <%= f.check_box :Microsoft %> <%= f.label "Microsoft" %>&nbsp; &nbsp; 
    <%= f.check_box :Windows %> <%= f.label "Windows" %> &nbsp; &nbsp; 
    <%= f.check_box :Google %> <%= f.label "Google" %> 
    <%= f.button :submit, 'Submit' %>
  <% end %>
</div>
1
Brittany 19 Фев 2016 в 07:50

2 ответа

Лучший ответ

Простую форму для действия можно изменить на действие (используйте параметр url), мы хотим, например,

<div class="infoheaders">1. Question

<%= simple_form_for @category, :url => url_for(:action => 'your_action', :controller => 'your_controller'), :method => 'post' do |f| %>
<%= f.collection_select(:title, Category.all, :title, :title) %>

</div>
<div class="grey-text-subheader">Device: (optional)</div>

<%= f.check_box :Apple %> <%= f.label "Apple" %> &nbsp; &nbsp; 
<%= f.check_box :iPhone %> <%= f.label "iPhone" %> &nbsp; &nbsp;
<%= f.check_box :iPad %> <%= f.label "iPad" %> &nbsp; &nbsp; 
<%= f.check_box :Mac %> <%= f.label "Mac" %> &nbsp; &nbsp;  
<%= f.check_box :Android %> <%= f.label "Android" %>  
<br><br>
<%= f.check_box :Samsung %> <%= f.label "Samsung" %> &nbsp; &nbsp;  
<%= f.check_box :Microsoft %> <%= f.label "Microsoft" %>&nbsp; &nbsp; 
<%= f.check_box :Windows %> <%= f.label "Windows" %> &nbsp; &nbsp;
 <%= f.check_box :Google %> <%= f.label "Google" %> 
<%= f.button :submit, 'Submit' %>
<% end %>

</div>

В вашем контроллере вы получите параметры, которые были отправлены через форму,

class Yourcontroller
  def your_action
  // render text: params and return false 
  if params[:category][:ipad].present?
    @checked = params[:category][:ipad]
  end  
  if params[:category][:ipad].present?
    @checked = params[:category][:android]
  end
  if params[:category][:ipad].present?
    @checked = params[:category][:samsung]
  end
  /* check the params and assign to the variables */
  // render text: params[:category] and return false
  end
end

Теперь создайте your_action.html.erb, и вы получите там значения.

<div>
 The checked valus is  <%= @checked %>
</div>

Это оно.

2
Sravan 19 Фев 2016 в 05:24

Замените вашу форму следующим

    <div class="infoheaders">1. Question
    <%=form_for @category, :url=>"/register", do |f| %> 
    <%= f.collection_select(:title, Category.all, :title, :title) %>
    <div class="grey-text-subheader">Device: (optional)</div>
    <%= f.check_box :Apple %> <%= f.label "Apple" %> &nbsp; &nbsp; 
    <%= f.check_box :iPhone %> <%= f.label "iPhone" %> &nbsp; &nbsp;  
    <%= f.check_box :iPad %> <%= f.label "iPad" %> &nbsp; &nbsp; 
    <%= f.check_box :Mac %> <%= f.label "Mac" %> &nbsp; &nbsp;  
    <%= f.check_box :Android %> <%= f.label "Android" %><br><br>
    <%= f.check_box :Samsung %> <%= f.label "Samsung" %> &nbsp; &nbsp;  
    <%= f.check_box :Microsoft %> <%= f.label "Microsoft" %>&nbsp; &nbsp; 
    <%= f.check_box :Windows %> <%= f.label "Windows" %> &nbsp; &nbsp; 
    <%= f.check_box :Google %> <%= f.label "Google" %> 
    <%= f.button :submit, 'Submit' %>
    <% end %>
    </div>

И в маршрутах Добавьте следующие строки

get "/register"=> "controller#action"
1
Apoorv 19 Фев 2016 в 05:15