2016-01-15 9 views
0

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

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 
    <%= render 'layouts/logged_in/registration_form_header', f: f %> 
    .... 
<% end %> 

Частичные работы, как это:

Here is some text 
<% puts "inside the partial %> 

puts утверждение показывает в консоли и текстовых дисплеев. Если добавить тематическое заявление так:

<% case @type %> 
<% when 'Organization' %> 
    its an organization 
<% when 'Presenter' %> 
     111111 
     <% puts "this statement is being evaluated" %> 
     <%= "inside the partial" %> 
     222222 
<% end #case statement for type %> 

В приведенном выше заявлении @type определяется как "Presenter" в действие контроллера. Я знаю, что это работает, потому что оператор puts правильно отображается в консоли. Однако единственный текст, который выводится в браузер, равен 222222. Строка «внутри частичной» не отображается на экране, а также 111111. Я знаю, что код <% when 'Presenter' %> - это то, что выполняется, потому что оператор puts работает, и Появляется 222222, но почему остальная часть контента не появляется? Если я беру оператор case вне частичного и отображаю его в исходном файле кода, все работает так, как должно.

+2

Я хотел бы избежать положить все, что логика в вашем представлении. Но это не относится к делу ... – Cyzanfar

+0

Это ваш стенографический код? Я не вижу никакой ошибки здесь, такие конструкции, как обычно, работают нормально (неважно, целесообразны они или нет). Можете ли вы опубликовать фактический код? Возможно, вы пропустили некоторые «=» или «%» в стратегических местах. ;) – AnoE

+0

Это мой фактический код. Скопировано и вставлено непосредственно из частичного. – Philip7899

ответ

0

В целом, это не очень хороший способ написать код. Так легко повредить вещи.

Определите способ (например, def registration_form_header(type)) в вашем вспомогательном классе. Поместите эти логики в вспомогательный метод, и использовать вспомогательный метод для вывода HTML вы хотите, на основе ввода @type, то вы можете просто сделать:

# app/helpers/application_helper.rb or any specific helper file 
module ApplicationHelper 
    def registration_form_header(type) 
    ... ... 
    end 
end 

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 
    <%= registration_form_header(@type) %> 
    .... 
<% end %>