2010-09-30 178 views
1

我有东西像ID,动作类型,描述的审计日志...Case语句

我想什么在视图中做的是一样的东西:

case description 
    when "created" 
    <li>created styling</li> 
    when "deleted" 
    <li>deleted styling</li> 
    else 
    <li>error</li> 
end 

试图学习如何在视图中以及在Google上找到的资源没有指定的正确语法来执行此操作。

+0

[CHEC k this。](http://techspry.com/ruby_and_rails/how-to-write-case-statement-into-views-rails-quick-tips/) 我在这个博客找到了解决方案!希望我帮助:) – Gerry 2011-04-03 11:19:55

回答

4

如果你的造型包含大量标签和HTML元素,我建议把它们变成谐音:

<%= render :partial => @audit_log.description rescue nil %> 

如果descriptioncreated,那就在与当前视图相同的文件夹中渲染文件_created.html.erb

如果它是deleted,则渲染_deleted.html.erb自动。

如果description是别的东西,它没有_something.html.erb文件,那么不会有任何显示(无rescue nil,错误会发生)

======

如果你想渲染的部分在一些不同的文件夹,

<%= render :partial => "some/where/#{@audit_log.description}" %> 
+0

这看起来很不错。 TWhat我不能包裹我的头是我的数据库字段是ID,行动,类型,描述,数据...和数据应该容纳一个具有关联的数据基于类型...所以我希望CASE语句来检测TYPE,然后输出信息。每个TYPE的信息都不一样,这就是为什么我要使用一个充满元数据的数据字段....所以我需要使用CAST来检测类型,然后将它发送到像_auditlogItem.html这样的部分。 erb ....也许在部分内容中,我可以传递基于ACTION类型的字符串,例如“James Bond删除了Book_id。想法? – AnApprentice 2010-09-30 03:45:21

+1

实际上我很困惑你的数据库字段...什么是自然行为,TYPE和DESCRIPTION?所以你首先要确定TYPE,以便正确地获取DATA。然后'deleted','created'是ACTION还是DESCRIPTION? – PeterWong 2010-09-30 03:58:51

+0

示例:1 | CREATED | PHOTO | DATA ....和数据将是一个HASH(我认为这是要走的路,但IDK呢)数据将创建一个观察员{photo_name:“asdadasd”,photo_id:“3131”}这个想法是能够输出没有需要跨多个表加入想法? – AnApprentice 2010-09-30 04:10:39

1

这应该工作:

<%= 
    case @audit_log.description 
    when "created" then "created styling" 
    when "deleted" then "deleted styling" 
    else "error" 
    end 
%> 
+0

谢谢,一个问题...我想它是HTML的时候....所以当“创建”

  • 很多东西
  • ..但它错误与HTML ..我该如何满足时,Rails接受HTML代码块? – AnApprentice 2010-09-30 03:37:08

    +1

    也许在'

  • <%= case ...%>
  • '中包装该标签。你看到什么错误? (就我个人而言,我更喜欢在视图中使用'<% if %>'语句来提高可读性。) – Raphomet 2010-09-30 03:39:48

    -2

    实际上这将是更好和更容易使用jQuery的addclass功能