加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用ActiveResource模型时,嵌套表单失败,Rails

发布时间:2020-12-16 23:14:50 所属栏目:百科 来源:网络整理
导读:我在为ActiveResource模型创建表单时遇到问题,但我似乎无法找到解决方案.问题是模型不知道字段,并在我尝试创建文本字段时抛出错误: undefined method `firstname' for #User:0x00000002946ec8 对于这种形式: %= form_for(@user) do |f| %div class="field"
我在为ActiveResource模型创建表单时遇到问题,但我似乎无法找到解决方案.问题是模型不知道字段,并在我尝试创建文本字段时抛出错误:
undefined method `firstname' for #<User:0x00000002946ec8>

对于这种形式:

<%= form_for(@user) do |f| %>
<div class="field">
   <%= f.label :firstname %><br>
   <%= f.text_field :firstname %>
 </div>

这是我的控制器:

def new
  @user = User.new
end

这是我的用户模型:

class User < ActiveResource::Base
  self.site = "https://***.com/api/v1.0/"
end

我尝试了以下方法,但是这对ActiveResource模型不起作用,它不知道再也无法存储检索到的数据. user.firstname为空,当我删除它不是行…

attr_accessor :firstname,:lastname

然后我找到了宝石Fortify(https://rubygems.org/gems/fortify),但最后一次更新是在2010年,安装它不起作用……

我希望有人熟悉这个问题,可以帮助我朝着正确的方向前进.

解决方法

您应该在控制器中使用.build [1]而不是.new [2],如:
@user = User.build

原因是.new没有params只创建一个空对象,而.build首先查询api它应该使用的params,特别是对于这个用例(see this thread for more details)

文档:

> 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读