为什么这种形式不起作用?

时间:2014-11-20 14:38:12

标签: ruby-on-rails

我正在制作邮件,以便我有一个商家目录,每个商家信息都有一个表单,当表单填写完毕并提交后,会将其发送到带有潜在客户信息的相关商家电子邮件。

这是邮件文件夹文件:

class Enquiry < ActionMailer::Base
  default from: "admin@uk-franchise.co.uk"
  attr_accessible :name

  def lead(listing)
    @listing = listing
    mail(to: @listing.leadrecepient, subject: "test")
  end
end

这是我正在调用它的列表控制器:

  def lead
  listing = Listing.find(params[:id])
  Enquiry.lead(listing).deliver
  redirect_to listing
  end

观点:

  <%= form_for @listing, url: lead_listing_path(@listing), method: :put do |listing| %>
    <%= listing.text_field :name %>
    <%= listing.submit %>
  <% end %>

路线:

  resources :listings do
    member do
      put :lead
    end
  end

错误:(

undefined method `name' for #<Listing:0x4d7c6d8>

在视线上:

<%= listing.text_field :name %>

任何帮助都非常感谢,邮寄是一场噩梦!

1 个答案:

答案 0 :(得分:0)

使用form_for助手时,它实际上依赖于模型对象。这样做,当您编写listing.text_field :name时,它实际上会在name模型中查找字段listing。你得到那个错误,因为你的模型(连接到数据库表?我们希望看到listing类)没有这个字段。我可以在Inquiry类中看到它。 我会说你必须在模型中移动它,但很难说没有看到模型或知道你需要那个领域...... 向我们展示模型并更好地解释你想做什么,所以我们可以帮助你:)