【问题标题】:Rails 4 - Fields Which are Not a Part of a Model in FormRails 4 - 不属于表单模型的字段
【发布时间】:2014-04-09 13:23:48
【问题描述】:

我遇到了一些不属于我的模型的属性的问题。我正在尝试设计一个简单的支付页面,如下所示,出于安全原因,所有字段都表示在我的数据库中,除了 card_number 和 card_verification。

当我加载页面时,它会抛出一个错误:

undefined method `card_number' for #<Order:0x00000004eddb00>
undefined method `card_verification' for #<Order:0x00000004eddb00>

我的表单有什么问题?

谢谢。

表格:

<%= simple_form_for(@order, html:{class: "well"}) do |f| %>
  <%= f.input :first_name %>
  <%= f.input :last_name %>
  <%= f.input :card_type, collection: ["Visa", "MasterCard"] %>
  <%= f.input :card_expires_on %>
  <%= f.input :card_number %>
  <%= f.input :card_verification %>
  <%= f.button :submit %>
<% end %>

order.rb:

class Order < ActiveRecord::Base
  belongs_to :user
  belongs_to :participation
end

orders_controller.rb:

class OrdersController < ApplicationController
  before_action :set_order, only: [:show, :edit, :update, :destroy]

  def new
    @order = Order.new
  end

  def create
    @order = Order.new(order_params)
    respond_to do |format|
      if @order.save
        format.html { redirect_to @order, notice: 'Order was successfully created.' }
        format.json { render action: 'show', status: :created, location: @order }
      else
        format.html { render action: 'new' }
        format.json { render json: @order.errors, status: :unprocessable_entity }
      end
    end
  end

  private
    def set_order
      @order = Order.find(params[:id])
    end

    def order_params
      params.require(:order).permit(:ip_address, :first_name, :last_name, :card_type, :card_expires_on, :user_id, :participation_id)
    end
end

【问题讨论】:

  • 卡号不允许?好的,我知道了。那么,为什么不对这些数据使用 html 助手呢?

标签: ruby-on-rails ruby-on-rails-4


【解决方案1】:

我认为抛出错误的部分应该是你的表单:

<%= f.input :card_number %>
<%= f.input :card_verification %>

您可以尝试添加:

attr_accessor :card_number, :card_verification

到你的模型。

【讨论】:

  • 不是 attr_accessor 在 Rails4 中贬值了吗?我正在使用 Rails4,请检查问题的标题。
  • attr_accessor 是 Ruby 方法。不要将其与attr_accessible 混淆。
  • 谢谢,解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多