Redmine 中使 model 支持附件(acts_as_attachable)

In Model

model 添加 acts_as_attachable

In Controller

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
```
helper :attachments
include AttachmentsHelper

def create
  ...
  @your_model.save_attachments(params[:attachments])
  ...
  @your_model.save()
  ...
end

def update
  ...
  @your_model.save_attachments(params[:attachments])
  ...
  @your_model.save()
  ...
end
```

In View

view 的 form 添加附件上传

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
form 添加 :multipart => true

```
<%= form_for(@xc_tool, :html => {:id => 'xctool-form', :multipart => true}) do |f| %>
```

利用 attachment 的 partial view 添加上传控件

```
<div class="tabular_div">
    <label><b><%= l(:label_xc_tool_icon) %></b></label>
    
    <div style="display: inline; clear: both;">
      <%= render :partial => 'attachments/form', :locals => {:container => @xc_tool, :has_one => true} %>
      
      <% if attachment = @xc_tool.attachments.first %>
        <%= link_to(
          image_tag(
            url_for({:controller => 'attachments', :action => 'download', :id => attachment }),
            :width => '200' ),
          {:controller => 'attachments', :action => 'download', :id => attachment, :filename => attachment.filename}
          )
        %>
        <%= link_to image_tag('delete.png'), attachment_path(attachment),
                                             :data => {:confirm => l(:text_are_you_sure)},
                                             :method => :delete,
                                             :class => 'delete',
                                             :title => l(:button_delete) %>
      <% else %>
      <%= image_tag('default_tool_icon.png') %>
      <% end %>
    </div>
</div>
```