首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >partial的内部case语句使partial停止工作,但在partial外部工作

partial的内部case语句使partial停止工作,但在partial外部工作
EN

Stack Overflow用户
提问于 2016-01-16 03:05:27
回答 1查看 57关注 0票数 0

这是一个非常奇怪的问题。我有一个叫这个的部分:

代码语言:javascript
运行
复制
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
    <%= render 'layouts/logged_in/registration_form_header', f: f %>
    ....
<% end %>

partial的工作原理如下:

代码语言:javascript
运行
复制
Here is some text
<% puts "inside the partial %>

puts语句将显示在控制台中,并显示文本。如果我像这样添加一个case语句:

代码语言:javascript
运行
复制
<% 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语句放在部分语句之外,并将其显示在原始代码文件中,则一切工作正常。

EN

回答 1

Stack Overflow用户

发布于 2016-01-16 05:07:07

总体而言,这不是编写代码的好方法。所以很容易把事情搞砸。

在你的助手类中定义一个方法(例如def registration_form_header(type))。将这些逻辑放入帮助器方法中,然后使用帮助器方法根据输入的@type输出您想要的html,然后您就可以执行以下操作:

代码语言:javascript
运行
复制
# 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 %>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34818012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档