2013-01-07 45 views
0

我不认为我需要问这个,但在这里。我有一个应用程序,可以让您查看,检入并在书本上设置提醒,例如,通过单击check_box完成此操作。因此,如果User1例如签出Book1,则该用户将只能在查看时看到签入按钮。然后如果同一用户检查那本书然后退房按钮将重新出现如果/其他/除非选择Rails

然后来到user2,他们查看同一本书,理论上不应该能看到任何按钮除了提醒我按钮(这发送电子邮件,当书被检查回来)由user1。

但是,使用当前设置,用户2仍然看到结帐按钮,但它已经打勾表示真实,这在状态方面是正确的,但我不希望那个按钮显示。

这是我迄今为止(逻辑的提醒我按钮犯规渲染什么)

<% unless current_user.id == @book.user_id %> 
<%= render 'shared/checkout' %> 
<% end %> 

<% if current_user.id == @book.user_id %> 
<%= render 'shared/checkin' %> 
<% end %> 

<% if @book.user_id != nil && current_user.id != @book.user_id %> 
<% render 'shared/registerinterest' %> 
<% end %> 

此外,当用户检回一本书这是我通过这个模型,我就在想这个零值可能会导致一个问题?

<%= form_for @book do |f| %> 

<%= f.label :checked_out, "Check Book Back In" %> 
<%= f.check_box :checked_out, {checked: false}, false %> 
<%= f.hidden_field :user_id, :value => nil %> 
<%= f.submit 'Check In' %> 
<% end %> 

似乎无法让我的头围绕这个场景,所以如果有人可以解释为什么那么这将是伟大的,因为我可以从中学到

谢谢

编辑

IM现在尝试这种基于登录按钮的注册按钮

<% if @book.checked_out == true && current_user.id != @book.user_id %> 
<% render 'shared/registerinterest' %> 
<% end %> 

但是这不起作用?

+0

那么它不只是我呢? (除了这一个) – Richlewis

回答

2

好,

代码 <% unless current_user.id == @book.user_id %>

是一样的: <% if current_user.id != @book.user_id %>

所以,因为user2的ID的是二的确会differente不是用户的ID的(即1), ,它会显示结帐部分。

我sugestion将被添加到数据库中,如果书已经签出,通知一个布尔字段,

<% if current_user.id == @book.user_id %> 
    <%= render 'shared/checkin' %> 
<% elsif @book.checked_out == false %> 
    <%= render 'shared/checkout' %> 
<% else %> 
    #If it goes into this branch of the if/elsif/else, it means that 
    # current_user.id != @book.user_id and checked_out == true 
    <%= render 'shared/registerinterest' %> 
<% end %> 

然后,你还要当有人检查出书来实现的东西,checked_out设置为true 。

编辑:包括最后一个。

+0

啊是的,已经在那里有一个checked_out列,jsut没有想到使用它,所以这很好,解决了1个问题,非常感谢,现在我需要显示一个注册按钮,如果书已签出(真),并且该ID不是我的(!=),请参阅编辑问题如果可以帮助 – Richlewis

+0

编辑它,我希望它可以帮助。 –

+0

谢谢,所以我不需要声明任何东西,只是其他,然后渲染任何按钮,我需要在底下? – Richlewis