Я пытаюсь отобразить частичное представление на той же странице, что и страница частичного просмотра формы ввода, но я не уверен, правильно ли я это делаю - PullRequest
1 голос
/ 19 сентября 2019

Я хочу отобразить вывод на той же странице, где я принимаю ввод от пользователя.Однако я не знаю, как я могу это сделать.У меня есть частичная страница, которая показывает вывод, который я хочу отобразить на странице формы ввода (могу ли я это сделать?)

Код контроллера

class DashboardsController < ApplicationController
    def do_search
        render :partial => "search_form"
    end

    def process_search_data
        @data = Dashboard.new(token: session['token']).get_search_data(search_params)
        #render :partial => "search_form" (not sure if I should render the input page here)
    end

    private

      def search_params
        params.permit(:division_id, :facilities)
      end

Просмотреть код ( ВводФорма )

<form action="/dashboards/process_search_data" method="POST">
  <input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>" >
  <div class="form-row" style= "display: inline;">
      <% if @roles['is_system_admin'] || @roles['is_division_admin'] %>
        <div class="col" style="display: inline;">
          <%= label_tag 'facility', t('forms.division'), {class: 'division-lable'} %>
          <%= select_tag 'division_id', options_for_select(@filters['divisions'].map {|key, value| [value, key]}), {class: 'form-control division-select', include_blank: '-'} %>
        </div>
        <div class="col" style="display: inline;">
          <%= label_tag 'facility', t('forms.facility'), {class: 'facility-lable'} %>
          <%= select_tag 'facilities', options_for_select(@filters['facilities'].map {|f| [f['facility_name'], f['facility_id']]}), {class: 'form-control facility-select', include_blank: '-'} %>
        </div>
      <% else %>
        <div class="col" style="display: inline;">
          <%= label_tag 'facility', t('forms.facility'), {class: 'facility-lable'} %>
          <%= select_tag "facilities", options_for_select(@facility_select_options), class: 'form-control facility-select', include_blank: t('facilities.all_facilities') %>
        </div>
      <% end %>
    <div class="col" style="display: inline-block; width: 150px;">
      <p class="text-right">
        <input type="submit" name="search" value="Search" id="facility_dashboards_search_button" class="button button-primary">
      </p>
    </div>
  </div>
</form>

<%= render :partial => 'cards' %> <!-- is this how I can render the output page here? -->

Просмотр кода ( Выход )

<div class="container">
<div class="row">
<% if @data.present? %> 
<% @data.each do |val| %>
  <div class="col-sm-6 col-md-4 col-lg-3 mt-4">
    <div class="card">
      <img class="card-img-top" src="http://www.webcoderskull.com/img/team1.png">
      <div class="card-block">
          <h7 class="text-bold">Name: <%= val["user_name"] %></h7><br>
          <h7 class="text-bold">Facility: <%= val["facility_name"] %></h7><br>
          <h7 class="text-bold">Company: <%= val["company_name"] %></h7>
      </div>
    </div>
  </div>
<% end %>
<% end %>
</div>
</div>

1 Ответ

0 голосов
/ 19 сентября 2019

Если вашему частичному элементу присвоено имя _cards.html.erb, вы можете отобразить его с помощью <%= render 'cards' %>, если он находится в том же каталоге.

Если вы хотите получить доступ к переменной экземпляра @data в частичном элементе вашей карты, вынеобходимо передать данные в партиал, откуда вы их рендерите следующим образом: -

<%= render 'ark_show', locals: { data: @data } %>, тогда вы можете использовать переменную data в партиале.

Подробнеевот что может пригодиться - https://edgeguides.rubyonrails.org/layouts_and_rendering.html#using-partials

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...