这是一个非常奇怪的问题。我有一个叫这个的部分:
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= render 'layouts/logged_in/registration_form_header', f: f %>
....
<% end %>partial的工作原理如下:
Here is some text
<% puts "inside the partial %>puts语句将显示在控制台中,并显示文本。如果我像这样添加一个case语句:
<% 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。"inside The partial“字符串不会出现在屏幕上,111111也不会出现。我知道正在运行的是<% when 'Presenter' %>代码,因为puts语句有效,并且出现了222222,但是为什么其他内容没有出现呢?如果我将case语句放在部分语句之外,并将其显示在原始代码文件中,则一切工作正常。
发布于 2016-01-16 05:07:07
总体而言,这不是编写代码的好方法。所以很容易把事情搞砸。
在你的助手类中定义一个方法(例如def registration_form_header(type))。将这些逻辑放入帮助器方法中,然后使用帮助器方法根据输入的@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 %>https://stackoverflow.com/questions/34818012
复制相似问题