我有一個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