簡體   English   中英

是什么導致我的Ruby on Rails控制器中的動作被重復調用?

[英]What would cause an action in my Ruby on Rails controller to be called repeatedly?

地獄 我正在研究RoR,並且在安裝Paperclip並設置了適用於它的代碼之后,我的一個控制器中的新方法導致了StackOverflow;)。 我正在運行Rails 3.0和Ruby 1.8.7。 誰能猜出或告訴我是什么導致我的new動作被反復調用?

這是服務器輸出...

Started GET "/projects/new" for 127.0.0.1 at Mon Oct 18 19:25:42 -0500 2010
  Processing by ProjectsController#new as HTML
Completed   in 1192ms

SystemStackError (stack level too deep):
  app/controllers/projects_controller.rb:27:in `new'
  app/controllers/projects_controller.rb:27:in `new'
  app/controllers/projects_controller.rb:30:in `new'
  app/controllers/projects_controller.rb:29:in `new'
  .
  . 
  .
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.erb (3.6ms)
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (4.3ms)
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (63.9ms)

這是我的控制器代碼...

def new
    @project = Project.new

    respond_to do |format|
      format.html new.html.erb
      format.xml  { render :xml => @project }
    end
  end

這是new模板的查看代碼...

<%= form_for(:project, @project, :html => {:id => "project_form", :multipart => true}) do |f| %>
  <% if @project.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@project.errors.count, "error") %> prohibited this project from being saved:</h2>

      <ul>
      <% @project.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :tech_used %><br />
    <%= f.text_field :tech_used %>
  </div>
  <div class="field">
    <%= f.label :owner %><br />
    <%= f.text_field :owner %>
  </div>
  <div class="field">
    <%= f.label :created %><br />
    <%= f.date_select :created %>
  </div>
 <div class="field">
  <%= f.file_field :thumbnail %>
 </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

謝謝你的幫助!

使用以下內容:

def new
  @project = Project.new

  respond_to do |format|
    format.html
    format.xml  { render :xml => @project }
  end
end

使用format.html new.html.erb ,您可以再次調用new方法。 如果返回,則將調用.html方法,這將導致方法未找到錯誤。 而是遞歸地調用new直到內存用完。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM