我正在做我的第一个 Rails 项目,但我遇到了一个我无法弄清楚的问题。
我为一个名为 Archive的对象生成了一个 Scaffold
对这个对象,我添加了方法 processfile
当我尝试从 Archives#Index 链接到所说的方法时,我得到了这个:
undefined method `processfile' for #<Archive:0x702de78>
这是模型 存档.rb
class Archive < ActiveRecord::Base
belongs_to :users
attr_accessible :file, :user_id
mount_uploader :file, FileUploader
end
这是index.html.erb上的代码(属于档案)
<% @archives.each do |archive| %>
<tr>
<td><%= archive.file%></td>
<td><%= User.find(archive.user_id).name %></td>
<td>
<%= link_to 'Download', archive.file_url %>
::
<%= link_to 'Show', archive %>
::
<%= link_to 'Edit', edit_archive_path(archive) %>
::
<%= link_to 'Delete', archive, confirm: 'Esta Seguro?', method: :delete %>
::
<%= link_to "Process", archive.processfile %>
</td>
</tr>
<% end %>
这是routes.rb行:
match "archives/processfile/:id" => "archives#processfile", :as => :processfile
定义 whitin archives_controller.rb的 processfile 方法没有任何内容,我只是想测试功能,因为我很难掌握“rails 方式”
archives_controler.rb
def processfile
# @archive = Archive.find(params[:id])
#do something with the archive
end
总而言之,我最终想要实现的是在给定存档(取自索引表)上调用processfile方法 来处理它。在示例中,我淡化了方法调用(不向其传递档案或 archive.file)以使其运行,但无济于事。
我搜索了很多(在谷歌和这里),但没有找到一个明确的指南来解决我的问题,可能是因为我是新手,不能完全掌握 Rails MVC 背后的概念。
我已经阅读了一些有关仅由相同控制器访问的方法的内容,但是当人们从索引视图调用控制器上的方法而不将它们声明为帮助程序时,我已经看到了示例代码。o.0
我知道这可能是一个愚蠢的混淆,但我无法弄清楚:(