[英]adding new element in rails form
向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
之后,我尝试转到orders / new来创建新订单,以查看我的表单是否正确输出,但是在/ orders / new上却得到了未定义的方法“ quantity”错误
我在这里做错什么,应该怎么解决?
如果您想向表中添加额外的字段(如在现有模型中添加/编辑现有模型的属性),请使用迁移生成器 (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
这样,它将为您重新创建表。 这是您要摆弄已迁移文件的价格。
我希望这能解决您的问题。
它清楚地表明迁移已被编辑。
在Rails App中,永远不要编辑迁移。 创建用于添加列的新迁移。
在这之后。 如果您不在RAils 4.else上,请确保具有attr_accessor,否则请在控制器的每一列上添加许可。
params.require(:订单).permit(:量)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.