我有一个Java背景。我曾经将POJO(普通Java对象)类绑定到表单。 POJO的不与任何数据库表关联。 我试图在Rails中做同样的事情。我创建了以下型号:绑定导轨4与表格无模
class Email
def initialize
@to_email = ''
@name = ''
@subject = ''
@message = ''
end
end
与以下形式:
<h1>Please fill up the form</h1>
<%= form_for @email, :url => {:action => 'sendemail'} do |f| %>
<p>
Name<br/><%= f.text_field 'name' %>
</p>
<p>
Email<br/><%= f.text_field 'to_email' %>
</p>
<p>
Subject<br/><%= f.text_field 'subject' %>
</p>
<p>
Message<br/><%= f.text_area 'message' %>
</p>
<p>
<%= f.submit "Submit Data" %>
</p>
<% end %>
这里是我的控制器:
class EmailController < ApplicationController
def capture
@email = Email.new
end
def sendemail
@email = Email.create(email_params)
MandrillMailer.send_email(@email.to_email, @email.name, @email.subject, @email.message).deliver
end
def email_params
params.require(:email).permit(:name, :email, :subject, :email)
end
end
我得到的错误是:未定义的方法`MODEL_NAME”的#
我也试过这个网址,但不能通过
http://railscasts.com/episodes/193-tableless-model
得到在这种情况下我的模式是:
class Email
def self.columns()
@columns ||= []; # || represents concatenation
end
def self.column(name, sql_type=nil, default=nil, null=true)
columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null)
end
column :to_email, :string
column :name, :string
column :subject, :string
column :message, :text
end
在这种情况下,错误是:
undefined method `model_name' for #<Email:0x49f5b40>
这表明在视图<%= form_for @email, :url => {:action => 'sendemail'} do |f| %>
如果我将模型类编写为:
class Email < ActiveRecord::Base
然后我得到的错误:
undefined method `type_cast_from_database' for "string":String
和后?问题是什么? – Meier
嗨迈尔,我更新了问题,指出我得到的所有错误,谢谢 – Ashutosh
你可以显示错误消息的整个回溯。我还需要行号以指出最新情况。 – uday