这是一个非常奇怪的问题。我有一个像这样叫的部分:
<%= 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' %>
代码正在运行,因为看跌了声明有效并且222222正在出现,但为什么其他内容没有出现?如果我将case语句置于partial之外并将其显示在原始代码文件中,则一切正常。
答案 0 :(得分:0)
总的来说,这不是编写代码的好方法。如此容易搞砸了。
在助手类中定义一个方法(例如def registration_form_header(type)
)。将这些逻辑放入helper方法,并使用helper方法根据输入@type
输出所需的html,然后就可以了:
# 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 %>