2012-03-22 2 views
12

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

Я использую раскладку с вкладками 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, я d хотел бы связать с частичным названием viewall. Например:

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

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

ответ

31

Синтаксис передать переменную @foo к частичному заключается в следующем:

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

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

См. Раздел 3.4.4 от this guide.

EDIT:.?.? Так как Rails 3, более лаконичный вариант заключается в следующем:

render "partial", foo: @foo 
+0

На самом деле я пытался, что и не передать переменную вообще. render (: partial => "viewall",: locals => {: status_filter => "H"}) - попробовал его с и без(). Также попробуйте без успеха, чтобы это работало с link_to. Не уверен, возможно ли это или нет. – user1214966

+1

Убедитесь, что вы получили доступ к нему как 'status_filter' в частичном, а не' @ status_filter' или 'params [: status_filter]' – Thilo

+0

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