什么是向rails中的视图添加条件输入的更好方法?

时间:2015-08-04 15:36:25

标签: ruby-on-rails

我有一个页面的预览视图,我正在逐步构建一个页面。目前预览视图不起作用,它只是一个默认页面,具有默认文本和样式。我的任务是在用户通过表单提交页面元素时显示预览。这是默认视图的样子:

<h1>
  Worlds coolest Product
</h1>

<h3>
Buy me and make your life 10x more worthwhile! :)
</h3>

并且此默认文本由部分显示,如下所示:

<%= render 'manage/deal_steps/deal/main_header' %>

...

我的问题是我需要用用户提交的文本替换默认文本(如果有的话),但我还需要保留默认文本以防用户不提交任何内容。这样,如果没有,我不会得到任何错误 输入。保持简单,有没有办法实现这种效果,而不会像这样使用条件逻辑乱丢视图:

<h1>
  <%if retrieve_content('header')!= nil %>
  <%= retrieve_content('header')%>
  <%else%>
  Worlds coolest Product
  <% end%>
</h1>

<h3>
<%if retrieve_content('header_two')!= nil %>
  <%= retrieve_content('header_two')%>
<%else%>
Buy me and make your life 10x more worthwhile! :)
<%end%>
</h3>

2 个答案:

答案 0 :(得分:3)

这将为您提供与当前代码相同的结果:

<h1>
  <%= retrieve_content('header') || 'Worlds coolest Product' %>
</h1>

<h3>
  <%= retrieve_content('header_two') || 'Buy me and make your life 10x more worthwhile! :)' %>
</h3>

答案 1 :(得分:2)

修改'retrieve_content'方法以接受第二个可选属性defualt。它看起来像是:

.config

然后你可以使用它:

def retrieve_content(key, default = nil)
  <Your old logic> || default
end

如果您的默认文本更复杂(包括html和东西),请接受可选块并使用捕获助手。