рельсы 3 визуализировать частично с параметрами - PullRequest
12 голосов
/ 22 марта 2012

У меня проблема с передачей некоторых параметров в парциальный. Независимо от того, что я пробовал, параметры не передаются при визуализации части.

Я использую макет с вкладками jquery, и на каждой вкладке отображаются рабочие задания в определенном состоянии, а также на основе диапазона дат.

Для этого я использую params: sort_filter и: status_filter.

Мой оригинальный код здесь, но я хочу изменить его так, чтобы он отображал частичные значения в link_to вместо того, как это указано здесь:

         <ul>
            <li><%= link_to "Active", work_orders_path(params.merge({:status_filter => "A", :sort_filter => params[:sort_filter]}))  %></li>
            <li><%= link_to "On Hold", work_orders_path(params.merge({:status_filter => "H", :sort_filter => params[:sort_filter]}))  %></li>
            <li><%= link_to "Completed", work_orders_path(params.merge({:status_filter => "C", :sort_filter => params[:sort_filter]}))  %></li>
            <li><%= link_to "Billed", work_orders_path(params.merge({:status_filter => "B", :sort_filter => params[:sort_filter]}))  %></li>
        <li><%= link_to "All", work_orders_path(params.merge({:status_filter => "E", :sort_filter => params[:sort_filter]})) %></li>
     </ul>

Таким образом, вместо ссылки на индекс в моем work_orders_path, я бы хотел сослаться на частичную часть, называемую viewall. Как это:

<%= link_to render (:partial => 'viewall', :status_filter => "E", :sort_filter => params[:sort_filter]) %>

Мне нужно иметь возможность передавать объединенные параметры с частичными, если это возможно. Я просмотрел всю документацию и вчера весь день гуглял свои пальцы, чтобы найти ответ на этот вопрос, и все равно ничего не нашел. Любая помощь будет оценена.

1 Ответ

31 голосов
/ 22 марта 2012

Синтаксис для передачи переменной @foo в партиал:

render :partial => "partial", :locals => { :foo => @foo }

Тогда он доступен в частичном виде как foo.

См. Раздел 3.4.4 этого руководства .

РЕДАКТИРОВАТЬ : Поскольку Rails 3.?.?, Более краткая версия выглядит так:

render "partial", foo: @foo
...