【问题标题】:Ruby on Rails Create new Record with Values / Variables from a ViewRuby on Rails 使用视图中的值/变量创建新记录
【发布时间】:2012-12-04 22:37:30
【问题描述】:

我正在使用 RoR 3.2.9。 感谢这里的帮助,我设法完成了一些事情! 现在我正在尝试从视图中的 button_to 创建新记录:

<%= button_to "Do IT", :controller => :apos, 
                           :method => :match %>

控制器如下所示:

class AposController < ApplicationController

...

def new
-> standard
end

def create
-> standard
end

def match
    #@apo = Apo.new(:auftrnr => $aktuelleID, :artikelnummer => @artikel.artikelnummer, :beschreibung => @artikel.name, :menge => 0)
    #@apo = Apo.new(:auftrnr => 2)
    @user = User.new do |apo|
        apo.auftrnr = 1
        apo.artikelnummer = 1
    end
    @apo.save
  end
end

新记录的创建成功了。 但奇怪的第一件事是,我收到了消息:

Apo 已成功创建。

...在控制器的 create 方法中定义(我没有调用它,是吗?) 好吧,然后记录被创建为空,尽管我尝试用一​​些值创建它(尝试了你可以在上面看到的 3 种可能性,所以我认为这不是 ActiveRecord 语法错误)

*Apo 已成功创建。 Auftragsnummer:15

扎隆萨特:

Bankverbindung:

利弗拉德雷斯:

开始购物

编辑 |返回*

('15'是这个类的ID)

我期待这个新创建的记录中有一些内容:-(

我尝试在其他控制器中定义方法并获得相同的结果。 知道我又做错了什么吗??

Thaaaanks!

【问题讨论】:

    标签: ruby-on-rails-3 web-applications activerecord actioncontroller


    【解决方案1】:

    改变

    :controller => :apos, :method => :match
    

    :controller => :apos, :action=> :match
    

    并确保您保存实际记录 - 您当前在将记录构建为 @user 时保存了 @apo 变量

    【讨论】:

    • 哦,对不起这个愚蠢的错误。我修复了方法中的代码,但发布了旧的:-( ...但无论如何,效果是一样的。实际上,据我所知,我不想使用“动作”原因,这意味着渲染一个查看...我只想创建一条记录而不做任何其他事情:-) 为此,我是否必须在不是控制器的类中创建方法,或者我该怎么做?谢谢
    • 无论如何,任何想法,为什么控制器的创建方法被激活而不调用它?这类似于 rails 标准吗?
    • “我只想创建一条记录而不做任何其他事情” - 当浏览器发出请求时,它必须接收到它可以采取行动的响应。因此,Rails 要求您将 something 发送回浏览器。您可以让 rails 发出重定向到同一页面而不是呈现视图,或者您可以将请求作为 ajax 请求并让浏览器忽略您发回的任何响应(可以像“成功”一样简单)。但根本没有回应是不行的。
    • "为什么 Controller 的 create 方法没有调用就被激活了?" - 好吧,由于 RESTful 标准,您实际上 正在 调用它。也就是说,您正在向从非持久记录构建的表单操作 url 发送 POST 请求(默认提交),这恰好是 rails 将其解释为路由到“创建”操作的正确组合。您可能想阅读有关 Rails 路由和 RESTful 资源的信息...
    • 请发布为“button_to”代码生成的 HTML。这个按钮也是表单内的吗?如果是这样,请将其移出表单。
    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2013-12-21
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    相关资源
    最近更新 更多