【发布时间】:2016-01-15 19:05:27
【问题描述】:
这是一个很奇怪的问题。我有一个这样调用的部分:
<%= 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 语句:
<% 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 语句放在部分之外并将其显示在原始代码文件中,那么一切都会正常运行。
【问题讨论】:
-
我会避免将所有这些逻辑放在您的视图中。但是,这不是重点......
-
这是您的逐字代码吗?我从这里看不到任何错误,这样的构造通常工作得很好(不管它们是否可取)。你能发布实际的代码吗?也许您在战略位置错过了一些“=”或“%”。 ;)
-
这是我的实际代码。直接从部分复制和粘贴。
-
很奇怪。尝试旧的分治法,删除一些行直到它起作用,然后将它们放回...
-
呵呵,看看这个问题:stackoverflow.com/questions/9603321/…
标签: ruby-on-rails ruby ruby-on-rails-4 partials case-when