无法找到nil的有效映射

时间:2013-11-28 18:56:07

标签: ruby-on-rails ruby-on-rails-3 devise ruby-on-rails-4 carrierwave

所以,我正在使用载波来允许用户上传个人资料图片。现在最终,我希望用户能够点击图片并在profile.html.haml页面中即时上传新图片。

所以,我尝试了下面添加一个带有put动作的表单,让用户可以动态更新图像,而无需转到edit.html.haml页面。

但是,我遇到了这个错误:

Could not find a valid mapping for nil

Extracted source (around line #8):




<%= form_for(@user, :url => registration_path(@user), :html => { :method => :put }, :html => {:multipart => true}) do |f| %>
<%= link_to (image_tag current_user.profile_image_url(:thumb).to_s), edit_account_path(current_user)%>
<% end %>

我哪里出错了?

或者我已经尝试过这可能完全关闭了:

 <%= link_to (image_tag current_user.profile_image_url(:thumb).to_s), f.file_field :profile_image%>     

给出了这个错误:

Sites/Friendiose-master/app/views/home/landing_welcome.html.erb:9: syntax error, unexpected tSYMBEG, expecting ')'
...l(:thumb).to_s), f.file_field :profile_image);@output_buffer...

先谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您认为这个错误可能是什么?最常见的错误:

Sites/Friendiose-master/app/views/home/landing_welcome.html.erb:9: syntax error, unexpected tSYMBEG, expecting ')'
...l(:thumb).to_s), f.file_field :profile_image);@output_buffer...

我不打算给你完整的答案,但教你思考如何调试它。

https://github.com/carrierwaveuploader/carrierwave

这是carrierwave的文档。显示图像时,它显示以下内容:

    <%= form_for @user, :html => {:multipart => true} do |f| %>
  <p>
    <label>My Avatar</label>
    <%= image_tag(@user.avatar_url) if @user.avatar? %>
    <%= f.file_field :avatar %>
    <%= f.hidden_field :avatar_cache %>
  </p>
<% end %>

一个提示,这不是我的讽刺,但习惯于阅读更多和谷歌搜索更多。我没有使用过回形针,但我可以看到2分钟的谷歌搜索问题。

Ruby on Rails using link_to with image_tag

如何创建带图像的链接。

从该链接看看你们之间的区别:

<%= link_to (image_tag current_user.profile_image_url(:thumb).to_s), edit_account_path(current_user)%>

和正确的方法:

<%=link_to( image_tag(participant.user.profile_pic.url(:small)), user_path(participant.user), :class=>"work") %>

错误说你错过了什么?

直接给人们一个答案并不总是很好,但关键是如何弄明白。