0

これは本当に単純なことですが、私は少し頭がおかしくなり、目の前にある何かを見落としている可能性があります。誰でも助けることができますか?

基本的に、余分な不正な行を返す単純な各ループがあります。データベースに何もない場合でも、1 行返されます。

ループを含む私のショービューは次のとおりです。

  <p id="notice"><%= notice %></p>

<p>
  <b>Header:</b>
  <%= @mailer.header %>
</p>

<p>
  <b>Subtext:</b>
  <%= @mailer.subtext %>
</p>

<div id="" class="" padding-left: 30px;>    
<h3>Mailer Products </h3>

<ol id="mailer-Product-list">
<% @mailer.mailer_products.sort_by { |mailer_products| mailer_products.position }.each  do |mailer_product| %>
    <%= content_tag_for :li, mailer_product do %>
    <%= mailer_product.product.cat_no %>
<% end %>
<% end %>
</ol>   

    <%#= link_to 'Done', @product, :class => "standard-button" %>
</div>



<%= form_for([@mailer,@mailer.mailer_products.build]) do |f| %>

    <div class="field">
    <%= f.label :product_id %><br />
    <%= f.text_field :product_id %>
    </div>

    <div class="field">
    <%= f.hidden_field :mailer_id, :value => @mailer.id %>
    </div>

    <div class="actions">
    <%= f.submit "Add Product" %>
    </div>
<% end %>


<%= link_to 'Edit', edit_mailer_path(@mailer) %> |
<%= link_to 'Back', mailers_path %>

コントローラーのコードは次のとおりです。

class MailersController < ApplicationController

  def show
    @mailer = Mailer.find(params[:id])
     respond_to do |format|
      format.html # show.html.erb
      format.json { render :json => @mailer }
     end
   end

class MailerProductsController < ApplicationController

  def index
    @mailer_products = MailerProduct.find(:all)

    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json => @mailer_products }
    end
  end
end

end
4

2 に答える 2

2

への呼び出しはform_for次のようになります

form_for([@mailer,@mailer.mailer_products.build]) do |f|

.buildonの呼び出しが行うことなので、余分な空白のアイテムを取得しmailer_productsます。配列に新しいインスタンスを追加します

フォームがループの後にある場合、これは問題ではありませんが、物事が逆の場合、ループは変更された配列になります

于 2012-07-02T17:41:28.587 に答える
0

私のいつもの間違いは、ループに a の<%=代わりに aを追加することです...<%

<%= @foo.each do |itme| %>
# do stuff
<% end %>

どちらであるべきか

<% @foo.each do |itme| %>
# do stuff
<% end %>

タグをもう一度確認してください...

于 2012-07-02T11:22:48.880 に答える