Chr*_*ris 6 ruby ruby-on-rails activeresource
我在为ActiveResource模型创建表单时遇到问题,但我似乎无法找到解决方案.问题是模型不知道字段,并在我尝试创建文本字段时抛出错误:
undefined method `firstname' for #<User:0x00000002946ec8>
Run Code Online (Sandbox Code Playgroud)
对于这种形式:
<%= form_for(@user) do |f| %>
<div class="field">
<%= f.label :firstname %><br>
<%= f.text_field :firstname %>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
def new
@user = User.new
end
Run Code Online (Sandbox Code Playgroud)
这是我的用户模型:
class User < ActiveResource::Base
self.site = "https://***.com/api/v1.0/"
end
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法,但是这对ActiveResource模型不起作用,它不知道再也无法存储检索到的数据.user.firstname为空,当我删除它不是行...
attr_accessor :firstname, :lastname
Run Code Online (Sandbox Code Playgroud)
然后我找到了宝石Fortify(https://rubygems.org/gems/fortify),但最后一次更新是在2010年,安装它不起作用......
我希望有人熟悉这个问题,可以帮助我朝着正确的方向前进.
您应该.build在控制器中使用[1]而不是.new[2],例如:
@user = User.build
Run Code Online (Sandbox Code Playgroud)
原因是.new没有params只是创建一个空对象,而.build首先查询api它应该使用什么params,特别是对于这个用例(请参阅此线程了解更多详细信息)
文档:
http://api.rubyonrails.org/v3.2.13/classes/ActiveResource/Base.html#method-c-build
http://api.rubyonrails.org/v3.2.13/classes/ActiveResource/Base.html#method-c-new
| 归档时间: |
|
| 查看次数: |
720 次 |
| 最近记录: |