我正在 Rails 上创建博客。每次在新 页面上创建帖子时,我都想返回索引 页面并看到一条闪现消息“您的帖子已保存”。在布局上我有以下内容:
<body>
<%= flash.each do |key, value| %>
<p><%= value %></p>
<% end %>
<%= yield %>
</body>
问题是我现在在每个页面(索引、新等)的顶部都有大括号,我不知道为什么。此外,不仅仅是一条消息“您的帖子已保存。”。它还显示以下内容:“{“通知”=>“您的帖子已保存。”}”。这是在 Controller (posts_controller.rb) 上保留消息的代码:
def create
@post = Post.new(post_params)
if @post.save
redirect_to posts_path
flash[:notice] = "Your post was saved."
else
render "new"
end
end
我刚开始使用 Rails,感谢您的帮助。
最佳答案
请参阅下面的更新以获取解释
删除 <%= flash.each.... %> 中的 = 应该只是 <% flash.each.....%>
<% flash.each do |key, value| %>
<p><%= value %></p>
<% end %>
为简单起见,当您希望 ruby 代码在页面上呈现某些内容时,请使用 <%= %>
, ex: 显示您将使用的当前时间 <%= Time.now %>
.对于页面中没有文本呈现的 View 中的设置变量等其他内容,请使用 <% %>
.
例如,假设我想分配一个等于当前时间的变量,以便我可以在下面的 View 中使用它,我会使用 <% time = Time.now %>
然后我可以用 <%= time %>
在页面上显示那个时间.
<% time = Time.now %>
<p>The current time is <%= time %>.</p>
关于ruby-on-rails - Flash 消息 (Rails v.4.1.1) 花括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24046426/