将新文本字段添加到rails表单中的正确步骤是什么,以便rails将其注册?
目前的形式:
<%= form_for(@order) do |f| %>
<% if @order.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@order.errors.count, "error") %> prohibited this order from being saved:</h2>
<ul>
<% @order.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
# I WANT TO ADD A QUANTITY FIELD TO MY FORM
<div><%= f.label :quantity %><br />
<%= f.text_field :quantity, autofocus: true %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
添加上述代码后,我修改了数据库迁移。
[时间戳] _create_orders.rb
class CreateOrders < ActiveRecord::Migration
def change
create_table :orders do |t|
# added this line to the database since I want to have a new field in my form
t.string :quantity
t.timestamps
end
end
end
之后我尝试去订单/新创建新订单以查看我的表单输出是否正确,但我得到未定义的方法&#34;数量&#34;错误/ orders / new
我在这里做错了什么,我该怎么做才能解决它?
答案 0 :(得分:1)
如果要向表中添加额外字段(如添加/编辑现有模型的属性),请使用migration generator(2.1)创建独立迁移。运行
后不要编辑迁移文件rake db:migrate
优惠解决方案:
您可以撤消在该迁移文件中所做的任何更改,只需使用迁移生成器即可。然后迁移。以下是示例代码(未经测试)
rails generate migration add_quantity_to_orders quantity:string
rake db:migrate
非首选解决方案
作为一个简单的修复,因为我不知道你有多少迁移,我认为你应该删除所有内容并重新创建表。您无需撤消所做的更改。
rake db:migrate VERSION=0
rake db:migrate
这样它会为你重新创建表格。这是您为摆弄已经迁移的文件而支付的价格。
我希望这能解决你的问题。
答案 1 :(得分:0)
清楚地表明迁移已被编辑。
在Rails App中,永远不要编辑迁移。创建一个用于添加列的新迁移。
之后。如果你不在RAils上,请确保你有attr_accessor 4.else在控制器的每一列上添加许可。
params.require(:订单).permit(:量)