我在用 paperclip 和 activescaffold,就是从 edit 页面里的表单内上传个文件,因为需要读取这个文件修改数据库里的内容,所以必须自己写 update 方法,但 activescaffold 里应该是自己定义好了 update 方法的。我自己定制,就把它的覆盖了,虽然不报错,文件也可以提取,数据库也可以根据文件内容更新。
但在 update 方法里使用任何 redirect_to,都没法正常跳转页面,log 里看到开始执行 redirect_to,整个过程都完成了,没有一点报错,但页面没有任何动静。把 redirect_to 去掉后可以看到报错信息
ActionView::Template::Error (undefined method `to_label' for nil:NilClass):
3: :form_action => form_action ||= :update,
4: :method => method ||= :put,
5: :cancel_link => cancel_link,
6: :headline => headline ||= @record.to_label.nil? ? active_scaffold_config.update.label : as_(:update_model, :model => @record.to_label)} %>
active_scaffold (3.3.3) app/views/active_scaffold_overrides/_update_form.html.erb:6:in `__var_lib_gems_______gems_active_scaffold_______app_views_active_scaffold_overrides__update_form_html_erb__538170661__646349448'
actionpack (3.2.14) lib/action_view/template.rb:145:in `block in render'
activesupport (3.2.14) lib/active_support/notifications.rb:125:in `instrument'
actionpack (3.2.14) lib/action_view/template.rb:143:in `render'
actionpack (3.2.14) lib/action_view/renderer/partial_renderer.rb:265:in `render_partial'
可以确定是在 update 这个问题上。但陷入死循环了 定义 update---->覆写了原方法 不定义 update----->没法取 params....