背景
我在rails应用程序中有一个故事模型。该模型的一个部分是"发布"的布尔值。
在创建和编辑表单上,我有一个切换按钮,显示" On"如果故事发表并且"关闭"如果没有发表。此切换目前正常工作,我可以切换发布或未发布的故事;并且此切换相应地更新数据库。
问题
在显示页面上,我试图做一个if语句,但它没有正确解析,所以我只是打印出已发布的变量,它总是打印出来" false"即使在检查数据库时,它也被设置为" true"。
守则
<% @title="Stories" %>
<p><strong><%= @story.heading %></strong></p>
<p><%= @story.body %></p>
<p>
<%= #!!!!!!!!!!!!!!!!Not working currently!!!!!!!!!!!!!
# if @story.published
# @publish_Notice = "This story has been made public."
# else
# @publish_Notice = "This story is private."
# end
# @publish_Notice
@story.published # Always prints out 'false' even when database shows 'true'
%>
</p>
<p>~ <%= @story.authorName %></p>
<p>Submitted: <%= @story.created_at.strftime("%B, %d %Y") %><br/>
<%=
@location = " "
if @story.locationCity == "" || @story.locationCity == " " || @story.locationCity.nil?
@location = " "
else
@location = "Near: " @story.locationCity + ", " + @story.locationState
end
%>
<%= @location %></p>
<% if (user_signed_in?) && (current_user == @story.user) %>
<%= link_to 'Edit', edit_story_path(@story) %> |
<%= link_to 'Delete', @story, method: :delete, data: { confirm: 'Are you sure?' } %> |
<% end %>
<%= link_to 'Back', stories_path %>
答案 0 :(得分:1)
答案 经过2天试图弄清楚并解决这个问题,并且没有提出任何问题并最终在这里发布问题,我几分钟后在我的故事控制器中的代码片段中发现了问题。看看您是否可以在下面的代码中找到问题。
旧代码
def show
if @story.published = false && @story.user != current_user
redirect_to stories_url, notice: 'That action is not permitted.'
end
end
<强>解释强>
我设置了此代码段,以阻止人们在浏览器中输入故事编号并查看它,即使它尚未发布。问题代码在第二行,我检查故事是否已发布。我只放了一个等号,因此每次出现一个故事时,它都会将公布的变量改为“假”。无需更改数据库。我添加了额外的等号,现在一切正常。这是新代码。
新代码
def show
if @story.published == false && @story.user != current_user
redirect_to stories_url, notice: 'That action is not permitted.'
end
end
感谢那些如此迅速地请求跟进信息以帮助解决我的问题的人们。感谢您的帮助。