您可以看到here我的数据库的原始内容似乎正在打印到页面上。我在代码中的任何地方都看不到为什么会打印到视图的db的原始输出。以下是索引视图的代码:
<div class="main">
<div="messages">
<%=@messages.each do |t|%>
<h2 class="subject"><%=t.subject%></h2>
<p class="content"><%=t.content%></p>
<% end %>
<%=link_to "Create Message", edit_path%>
</div>
</div>
创建表单/视图:
<div class="formWrapper">
<%= form_for @messages do |t|%>
<div class ="Inputs">
<%=t.text_field :subject%><br>
<%=t.text_area :content%>
<div class="submit">
<%=t.submit "Submit"%>
</div>
<%end%>
</div>
</div>
控制器:
class MessagesController < ApplicationController
def index
@messages=Message.all
end
def new
@messages=Message.new
end
def create
@messages = Message.new(message_params)
if @messages.save
redirect_to '/'
else
render 'new'
end
end
private
def message_params
params.require(:message).permit(:content, :subject)
end
end
答案 0 :(得分:3)
这里不需要=
:<%=@messages.each do |t|%>
,等号告诉erb显示视图中的每条消息。
<% %>
将执行Ruby代码,而不会影响正在呈现的html页面。输出将被丢弃。
<%= %>
将执行Ruby代码并插入该代码的输出以代替&lt;%=%&gt;
...示例
<% puts "almost" %> nothing to see here
将呈现为
nothing to see here
然而
<%= puts "almost" %> nothing to see here
将呈现为
almost nothing to see here