(Ruby on Rails)根据属性的存在更改视图?

时间:2017-05-17 00:42:42

标签: ruby-on-rails

我遇到了允许用户更改其中一个属性的问题。我希望我的主页提示用户设置此属性,如果他们没有设置它。

我已经编写了此方法来检查是否存在此属性:

Container
  View

在我看来,我写过:

  def start_date_set?
     current_user.start_date?
  end

我认为如果没有设置start_date,则应该触发elsif,这不应该是创建新帐户的时间。但是,它不会触发,而是显示最终的其他条件。

有谁知道为什么应该呈现的视图不是?

已编辑添加

这是将start_date附加到用户的迁移:

<% if is_admin? %>
  #render admin
<% elsif !start_date_set? %>
  #this is what i want to see
<%else %>
  #render users posts
<% end %> 

<%#=if not logged in %> 
<% else %>
  #signup page is rendered
  #this is what shows up
<% end %>   

2 个答案:

答案 0 :(得分:0)

事实证明,我的方法只有在帐户被激活后才会起作用,我不知道为什么,但这就是它的效果。一旦我使用激活的帐户尝试上述代码,它就可以正常工作。

答案 1 :(得分:0)

你需要在另一个if语句的底部包含你的else语句来检查你是否登录。为此,您可以检查current_user对象的presenece。使用此if语句,您的视图如下所示:

<%#= if logged in %> 
<% if current_user %>
  <% if is_admin? %>
    # render admin
  <% elsif !start_date_set? %>
    # this shows up if you are logged in and start_date_set? returns false
  <% else %>
    # render users posts
  <% end %> 
<%#= if not logged in %> 
<% else %>
  # signup page is rendered when not logged in
<% end %>