19

我正在尝试将头像上传字段添加到我的个人资料页面,但是一旦我添加:html => {:multipart => true}到它,它就会吐出一个语法错误。

<%= form_for(@user), :html => { :multipart => true } do |f| %>
<%= render 'shared/error_messages', object: f.object %>

<%= f.label :name %>
<%= f.text_field :name %>

<%= f.label :email %>
<%= f.email_field :email %>

<%= f.label :password %>
<%= f.password_field :password %>

<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation %>


<%= f.label :avatar %>
    <%= f.file_field :avatar %>

    <%= f.submit "Save changes", class: "btn btn-large btn-primary" %>
<% end %>

错误是:

syntax error, unexpected tASSOC, expecting keyword_end
...end=  form_for(@user), :html => { :multipart => true } do |f...
...                               ^
4

3 回答 3

35

它应该是这样的:

form_for @user, :html => { :multipart => true } do |f|

中的括号form_for(@user)实际上是告诉 Ruby 解释器只使用一个参数调用函数,并且您不能在 Ruby 中的方法中传递错误数量的参数。

于 2013-04-02T09:17:00.300 回答
30

http://guides.rubyonrails.org/form_helpers.html#uploading-files

它要么是form_tag帮助者,multipart => true要么只是form_for

<%= form_tag({:action => :upload}, :multipart => true) do %>
  <%= file_field_tag 'picture' %>
<% end %>

<%= form_for @person do |f| %>
  <%= f.file_field :picture %>
<% end %>
于 2012-05-10T02:12:51.520 回答
1

我假设您正在使用“回形针”或“载波”来上传图像。所以,试试这个:

<%= form_for @user, : url => users_path, :html => {:multipart => true} do |f| %>
于 2013-06-21T04:20:04.277 回答