rails创建自定义操作

时间:2011-11-17 15:57:47

标签: ruby-on-rails file-upload controller

我创建了一个用于学习的小型rails应用程序,它有3个模型:

class Resource < ActiveRecord::Base
  belongs_to :task
  belongs_to :user
end

class User < ActiveRecord::Base      
     has_many :resources
     has_many :tasks, :through=>:recources
end


class Task < ActiveRecord::Base
  has_many :resources, :dependent => :destroy
  has_many :comments, :dependent => :destroy
  has_many :users, :through=>:resources

  accepts_nested_attributes_for :resources,:comments 

end

一切都很好 - 列出,创建等。但我想查看哪个用户上传包含任务的文本文件(我不能阅读文本文件的重要性)所以我读取文件并获取任务。我创建了一个名为upload的控制器:

class UploadController < ApplicationController
  def index
  end

  def upload
    flash[:notice]="Upload completed"
  end

end

和索引视图如下:

<% if flash[:notice] %>
   <p><%= flash[:notice] %></p>
<% end %>

<div class="upload">
  <p>Select a project file</p>
  <%= form_tag :controller=>:upload,:action => :upload,:method => :put do %>

  <%= file_field 'Project File',:file %>
  <%= submit_tag "Upload" %>

  <% end %>
</div>

当我按上传按钮时,它会给我“缺少模板上传/上传....”

我怎样才能完成这个动作,给我一些建议。

由于

2 个答案:

答案 0 :(得分:1)

缺少模板上传/上传....“

Rails正在寻找一个视图:app / views / upload / upload.html.erb

PS。您需要添加:multipart =&gt;在您的form_for中为true以上传文件;)

答案 1 :(得分:0)

如果您没有明确说明renderredirect_to的内容,则每个操作都会尝试呈现与自身名称相同的模板。所以你能做的就是:

     render :nothing => true

那应该做你想要的。

此外,关于使用render

可以做些什么,文档也很合适