原始数据库内容显示在Rails视图中

时间:2015-06-19 03:15:54

标签: ruby-on-rails sqlite model-view-controller

您可以看到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

1 个答案:

答案 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

查看<% %>(without equal) in ruby erb means?