尝试在我的Rails应用程序中使用form_for时出现以下错误:
=SWITCH(Fields!Prod_Horz_Category.Value="AEC", sum(Fields!Amt_w_o_Tax.Value),
Fields!Prod_Horz_Category.Value="ASB", sum(Fields!Amt_w_o_Tax.Value),
...
)
我的config / routes.rb是:
undefined method `to_key' for #<Table::ActiveRecord_Relation:0x8a09ca8>
控制器是:
root 'welcome#index'
post 'foo', as: 'foo', to: 'welcome#index'
欢迎/ index.html.erb视图是:
class WelcomeController < ApplicationController
def index
@tables = Table.all
end
def test
@tables = Table.all
end
end
我已尝试执行文档中建议的url解决方法,但我仍然遇到同样的错误。
有谁知道我做错了什么?我想更多地了解这个bug,以便我能更好地处理它。
答案 0 :(得分:2)
根据您的代码, Ext.define('myapp.view.applications.DetailSummarySection',{
extend:'Ext.Container',
xtype:'applications_detailsummarysection',
config:{
emptyText:'No data found',
appId:null,
items:[
{
itemId:'details_summary',
tpl:Ext.create('Ext.XTemplate',
'<tpl for="details">',
//....................
'</tpl>'
)
},
{
xtype: 'formpanel',
collapsible: true,
collapsed: true,
layout: 'hbox',
bodyPadding: 10,
title: 'Dates',
items: [{
xtype: 'textfield',
name: 'name',
label: 'Name'
}]
},
{
xtype:'toolbar',
itemId:'popup_bar',
docked:'bottom',
border:'0px',
height:'54px',
style:{'background-color':'#1E94C0'},
defaults:{
flex:1,
height:'48px',
padding:'0 0 0 0',
style:{ 'line-height':'10px','margin':'3px 0 0 0 ','border-radius':'0px', 'color':'#ffffff', 'background-color':'transparent', 'border':'0px'}
},
items:[
{
text:'Comments',
itemId:'notes',
cls:'pop-btn',
iconCls:'action',
iconAlign:'top'
},
{
text:'Feedback',
itemId:'feedBackBtn',
cls:'pop-btn',
iconCls:'star',
iconAlign:'top'
},
{
text:'CVS',
itemId:'cv',
cls:'pop-btn',
iconCls:'compose',
iconAlign:'top'
},
{
text:'Reject',
cls:'pop-btn',
itemId:'rejectBtn',
iconAlign:'top',
iconCls:'trash'
},
{
text:'Reject',
cls:'pop-btn',
itemId:'rejectCvSpecBtn',
hidden:true,
iconAlign:'top',
iconCls:'trash'
}
]
}
]
}
});
正在返回一个集合。但是,您的视图会尝试为其定义表单。这不太可能成功。
表单用于对象,而不是集合。
也许你可以做类似
的事情index
并在def new
@table = Table.new
end
new.html.erb
如果你想坚持<%= form_for @table do |f| %>
...
<% end %>
表格。然后你必须编辑索引操作的路由,并且在控制器中它应该用于创建新对象。
index.html.erb
希望它有所帮助!
答案 1 :(得分:0)
我看到你的代码有3个不真实的东西
然后是RESFUL标准:
索引操作总是通过get动作进行,所以在路径文件中你应该再次定义:
root "wellcome#index"
get "foo", to: "wellcome#index", as: :foo
form_for通常与模型对象一起使用,但是当你使用@tables时没有收集,如果模型对象没有保存到数据库form_for中使用创建1个对象到数据库,否则form_for使用更新该对象
def index
@tables = Table.all
@table = Table.new
end
<%= form_for @table do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.submit %>
<% end %>
rails g controller tables
在table_controller.rb中你写的相同:
def create
@table = Table.new table_params
if @table.save
redirect_to root_path, notice: "success"
else
redirect_to root_path, alert: "fail"
end
end
private
def table_params
params.require(:table).permit :name
end
以便。结束。美好的一天!