3

我在 /new.html.erb 中有这个表格:

<%= form_for @vendor, multipart: true do |f| %>
<%= f.text_field :name, "Store Name" %>
<%= f.text_field :address, "Store Address" %>
<%= f.file_field :image %>
<%= f.submit "Save", class: "btn btn-success" %>
<% end %>

以及这些供应商方法:

def new
    @vendors = Vendor.all
    @vendor = Vendor.new
end

def vendor_params
    params.require(:vendor).permit(:id, :name, :latitude, :longitude, :address, :image)
end

当我尝试渲染页面时,我收到此错误:

undefined method `merge' for "Store Name":String
Extracted source (around line #8):

5: <h4>New Vendor Form</h4>
6: 
7: <%= form_for @vendor, :html => {:multipart => true} do |f| %>
8: <%= f.text_field :name, "Store Name" %>
9: <%= f.text_field :address, "Store Address" %>
10: <%= f.file_field :image %>
11: <%= f.submit "Save", class: "btn btn-success" %>

我不确定为什么merge在这里被调用。它可能在隐藏的领域吗?我发现与此错误有关的大多数答案都与隐藏字段有关。我正在使用 Geocoder 在验证后对 lat 和 long 进行地理编码(不确定这是否相关):

class Vendor < ActiveRecord::Base


    geocoded_by :address
    after_validation :geocode,
        :if => lambda{ |obj| obj.address_changed? }
end

非常感谢这里的任何帮助!提前致谢。

4

2 回答 2

5

你应该这样写,因为你的第二个参数应该是一个选项哈希,它不应该是一个值..

<%= form_for @vendor, multipart: true do |f| %>
<%= f.text_field :name, :value => "Store Name" %>
<%= f.text_field :address, :value => "Store Address" %>
<%= f.file_field :image %>
<%= f.submit "Save", class: "btn btn-success" %>
<% end %>
于 2013-10-23T15:41:11.687 回答
0

尝试更改您的表格,如下所示

7: <%= form_for @vendor, :html => {:multipart => true} do |f| %>
8: <%= f.text_field :name %>
9: <%= f.text_field :address %>
10: <%= f.file_field :image %>
11: <%= f.submit "Save", class: "btn btn-success" %>

第二个参数是 text_filed 名称的一部分,在您的情况下会弄乱您的参数

于 2013-10-23T15:36:35.720 回答