我在我的 rails 应用程序中使用她的gem 从 Web 服务后端而不是数据库获取数据。尽管我相信这个问题与宝石并不完全相关。
我的模型正在使用ActiveModel
class Merchant
include ActiveModel::Model
# Add the awesomeness of Her gem
include Her::Model
attr_accessor :name, :type
validates :name, presence: true
end
我的控制器是
def create
@merchant = Merchant.new(params[:merchant])
if @merchant.valid?
respond_to do |format|
if @merchant.save
format.html { redirect_to @merchant, notice: 'Merchant was successfully created.' }
format.json { render :show, status: :created, location: @merchant }
else
format.html { render :new }
format.json { render json: @merchant.errors, status: :unprocessable_entity }
end
end
else
render :new
end
end
我有这样的表格
<%= form_for(@merchant) do |f| %>
<%= f.label :name, "First Name" %>
<%= f.text_field :name %>
<%= f.label :type, "Type" %>
<%= f.text_field :type %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
现在这里attr_accessor :name, :type
需要模型内部的表单才能正常运行或抛出此错误
undefined method `name' for #<Merchant(merchants) >
如果我attr_accessor
在模型中添加,@merchant.attributes
则返回{}
。
这导致 gem 向服务器发送空白请求,因为 gem 用于attributes
构建请求。我检查了宝石的来源。
如果我不添加attr_accessor
,那么一切正常,除了表单抛出错误。
有什么方法可以解决这个错误。老实说,我不清楚如何attributes
工作。