- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经多次看到这个问题出现在 SO 上,并尝试使用推荐的方法来解决问题。我的 form_for 仍然遇到此错误:
First argument in form cannot contain nil or be empty
我有几个字段应该输入到“费用”对象中。我希望表单提交并创建一个收费对象,其中包含我在表单中拥有的适当字段,包括隐藏字段(user_id 和 gift_id)。
模型:
class Gift
has_many :codes
has_many :charges
class Code
belongs_to :gift
class Charge
belongs_to :user
belongs_to :gift
class User
has_many :charges
charges_controller.rb
class ChargesController < ApplicationController
skip_before_filter :verify_authenticity_token, :only => [:new, :create]
def index
@charges = Charge.all
end
def show
@charge = Charge.find(params[:id])
end
def new
@charge = Charge.new
end
def create
@charge = Charge.new(params[:charge_params])
Stripe.api_key = "sk_test_Ig7H6rhd0jl7W3V48y5pleOa"
token = params[:stripeToken]
customer = Stripe::Customer.create(
:card => token,
:description => "payinguser@example.com"
)
Stripe::Charge.create(
:amount => gift.price,
:currency => "cad",
:customer => customer.id
)
save_stripe_customer_id(user, customer.id)
# Later...
customer_id = get_stripe_customer_id(user)
Stripe::Charge.create(
:amount => 1500,
:currency => "cad",
:customer => customer_id
)
if @charge.save
redirects_to gifts_path, flash[:notice] = 'It worked'
else
render 'gifts/new'
end
end
def edit
@charge = Charge.find(params[:id])
end
def update
@charge = Charge.find(params[:id])
@charge.update_attributes(charge_params)
end
def destroy
@charge = Charge.find(params[:id])
@charge.destroy
end
private
def charge_params
params.require(charge).permit(:sender_name, :recipient_email, :recipient_msg, :stripeToken, :gift_id, :user_id)
end
end
_new.html.erb(收集数据的表格)
<%= form_for @charge do |f| %>
<%= f.hidden_field :gift_id %>
<%= f.hidden_field :user_id %>
<div class="form-group left-inner-addon">
<i class="glyphicon glyphicon-send"></i>
<%= f.text_field :sender_name, :class => "form-control", :placeholder => "Sender's Name" %>
</div>
<div class="form-group left-inner-addon">
<i class="glyphicon glyphicon-send"></i>
<%= f.email_field :recipient_email, :class => "form-control", :placeholder => "Recipient's Email" %>
</div>
<div class="form-group left-inner-addon">
<i class="glyphicon glyphicon-pencil"></i>
<%= f.text_field :recipient_msg, :class => "form-control", :placeholder => "Message to Recipient" %>
</div>
<div class="form-group left-inner-addon ">
<i class="glyphicon glyphicon-credit-card"></i>
<%= f.text_field "data-stripe" => "number", :class= => "form-control", :placeholder => "Credit Card Number" %>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-4 left-inner-addon ">
<i class="glyphicon glyphicon-calendar"></i>
<%= f.text_field "data-stripe" => "exp-month", :class => "form-control", :placeholder => "MM" %>
</div>
<div class="col-xs-5 left-inner-addon ">
<i class="glyphicon glyphicon-calendar"></i>
<%= f.text_field "data-stripe" => "exp-year", :class => "form-control", :placeholder => "YYYY" %>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-xs-5 left-inner-addon ">
<i class="glyphicon glyphicon-ok-circle"></i>
<%= f.text_field "data-stripe" => "cvc", :class => "form-control", :placeholder => "CVC" %>
</div>
</div>
</div>
<%= f.submit :class => "btn btn-primary", :type => "submit" %>
<% end %>
_show.html.erb(呈现表单的部分)
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title"><center><%= gift.name %></center></h4>
</div>
<div class="modal-body">
<p><%= image_tag gift.picture.url(:mobile) %></p>
<p><%= gift.description %></p>
<p>$<%= gift.price %></p>
<%= render partial: 'charges/new', :locals => { :gift => gift } %>
</div>
<div class="modal-footer">
</div>
index.html.erb(呈现 _show.html.erb 部分的页面)
<%= title "Redwood | Gifts" %>
<div class="container">
<div class="row" id="item">
<% @gifts.each do |gift| %>
<div class="col-sm-6 col-md-4">
<div class="thumbnail">
<%= image_tag gift.picture.url(:medium) %>
<div class="caption">
<h3><%= gift.name %></h3>
<h4><%= link_to gift.merchant.name, merchant_path(gift.merchant.id) %></h4>
<p><%= gift.description %></p>
<p><%= link_to 'Buy', gift_path(gift), :remote => true, 'data-toggle' => "modal", 'data-target' => "#myModal#{gift.id}", :class => "btn btn-primary", 'data-type' => "html" %></p>
</div>
<!-- Modal -->
<div class="modal fade" id="myModal<%= gift.id %>">
<div class="modal-dialog">
<div class="modal-content">
<%= render partial: 'show', :locals => { :gift => gift } %>
</div>
</div>
</div>
<!-- End of Modal -->
</div>
</div>
<% end %>
</div>
</div>
最佳答案
您的"new"部分由您的“显示”部分呈现,然后“显示”部分由您的“索引” View 呈现。这意味着它只是正在运行的“索引”操作中的代码。由于您没有在索引操作中实例化名为@charge 的实例变量,@charge 将在"new"部分中返回 nil。这就是您收到该错误的原因。
要修复该错误,您应该将以下代码添加到您的索引操作中:
@charge = Charge.new
这样,@charge 将返回一个 Charge 实例而不是 nil。您也可以选择不使用"new"部分,只在其自身的"new" View 中显示用于创建新费用的表单,以便它在"new"操作中运行代码。
希望对您有所帮助!
关于ruby-on-rails - form_for 第一个参数在 rails 4 中不能为 nil 或为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20845640/
我是 javascript 的新手(今天开始弄乱它)。 我正在尝试更改名为“bar”的元素(div)的高度。条形图将成为图表的一部分。 我可以毫无问题地将按钮连接到更改栏高度的函数。一切正常,除了条形
错误 -> “UIVIew”没有名为“addSubView”的成员 override func viewDidLoad() { super.viewDidLoad() // Do an
我在命令行工具项目中复制并粘贴了 main.swift 下面链接中的代码。 How do you use CGEventTapCreate in Swift? 它构建没有错误,但是当我运行时, gua
我在尝试编译我的代码时遇到以下错误。 ERROR! ..\myCode\CPOI.cpp:68:41: error: cannot dynamic_cast 'screenType' (of type
我正在尝试将多个字符串连接到一个我已为其分配内存的字符串指针。这是一个例子: char *finalNumString = malloc(sizeof(char)*1024); finalNumStr
我在使用 dup2() 和 pipe() 时遇到问题。 当我尝试将管道的写入端 dup2 到 STDOUT_FILENO 时,我收到了 EBADF。 我用 gdb 在 dup2(pout[1], ST
首先,我应该说我运行的是 Windows 7。 因此,今天早上我尝试像往常一样从我的存储库中提取数据,但我做不到。我得到了错误: The authenticity of host 'github.co
刚开始在虚拟环境中运行Python,乱用Django,无法激活虚拟环境。 花了最后 4 个小时尝试在本地终端/VS 代码上激活虚拟环境 (venv),但没有成功。 避免使用“sudo pip inst
Tidyverse 的粉丝经常给出使用小标题而不是数据框的几个优点。它们中的大多数似乎旨在保护用户免于犯错误。例如,与数据框不同,小标题: 不需要 ,drop=FALSE不从数据中删除维度的论据。 不
我一直在对 Elm 应用程序进行 docker 化时遇到问题。据我所知,我已经创建了一个完整且有效的 Docker 文件……但它不起作用。 我会解释的。 所以我的脚本在 3 个文件中运行。 首先是启动
我可以在 Controller 中使用@Autowired,例如 @RestController public class Index { @Autowired HttpServlet
我定义了一个方法和一个函数: def print(str:String) = println val intToString = (n:Int) => n.toString 现在我想创作它们。 我的问
当我控制台单独记录变量“pokemons”时,它确实返回一个数组。但是当我尝试映射它时,出现错误: TypeError: pokemons.map is not a function 我的代码: im
每当我尝试在 Python 解释器中导入 smtplib 时,都会收到此错误: ImportError: cannot import name fix_eols 我该如何解决这个问题? 编辑:这是完整
我正在使用 Meteor.js 开发一个项目,但在使用 Handlebar 时遇到了一些问题:我想检索集合的最后一项,并显示字段:其中包含 html 的文本: 这是我的javascript代码: Te
你好,我想使用 Service 实现 GestureDetector 但是我有这个错误The method onTouchEvent(MotionEvent) of type GestureServi
我正在尝试在 Controller bean 中 Autowiring 接口(interface) 在我放置的上下文配置文件中 和 我的 Controller 类是 @Controller pub
我试图在 mainwindow.cpp 中包含 QtSvg,但是当我编译时它说无法打开包含文件:QtSvg。我已经在我的 *.pro 文件中添加了这个(QT += svg)。我可以知道可能是什么问题吗
鉴于以下 PostgreSQL 代码,我认为这段代码不容易受到 SQL 注入(inject)攻击: _filter 'day' _start 1 _end 10 _sort 'article_name
我想执行以下操作。这在 MySQL 中是非法的。 PostGRESQL 中关联的 CTE(“with”子句)有效。这里的假设是 MySQL 中的子查询不是完全限定的 CTE。 请注意:这个查询显然非常
我是一名优秀的程序员,十分优秀!