赞一个
不知道上面是不是你请要的答案 我猜测是不是不知道如何在 view,和 controller 怎么处理?
view:
依然是form_for,post 提交 update
只不过,teacher,student,最好放两个table 里面,好辨认,参数列名请明朗
=text_field_tag "teacher_name"
=text_field_tag "student_a_name"
=text_field_tag "student_b_name"
controller:
params里面依然可以取到对应的参数,请分别处理,model请关联one_to_many
teacher = Teacher.new
teacher.name = params[:teacher.name]
..
student_a = Student.new
student_a.name = params[:student_a_name]
student_a.teacher_id = teacher .id
..
student_b = Student.new
student_b= params[:student_b_name]
student_b.teacher_id = teacher .id
..
respond_to do |format|
if teacher.save
student_a.save if teacher.save
student_b.save if teacher.save
format.html {
xxxxx
xxxxx
}
else
flash.now[:error]="xxxxxx"
format.html { render :action => "xxx" }
format.xml { render :xml => @xxx.errors, :status => :unprocessable_entity }
end
end
javascript:
var test = #{raw(...)}
---测试 通过
谢谢 raw 在 script 用不了啊 大哥
谢谢,这个概念。弄懂了,歇歇您的指点,上面配置的‘post "/popup_signup_log" => "index#popup_signup_log" ...... 不能配置 member 换成 collection 这种形式么?没搞懂这种的区别,在官网看到对应的概念‘添加成员路由’,就是这种形式的,有什么区别,现在我只用您用的第二种形式实现了跳转‘/.,....=>..’
@will_c_j 首先 谢谢您的指点,我先说明一下我的状态,用了 Rails 半年多,在工作中,增加新功能,修改修改以前的 BUG 什么的都还好,但是最近,发现往深的看,自己什么都不懂,好多东西想不明白。 (前面大白话)您上面的写的这种格式,我了解,写过,测试了,可以的。我想请教,这里的 Rails 工作原理,是 View 发送 request,进入路由,寻找相应的 controller 对应的 def,处理完成后,跳转对应的页面。 (我想问,创建自定义路由后,对应的 template,也必须创建?DispatchServlet 自动寻找该页面,无关乎 def 里面的是否 render 或者 redirect_to)
有一种疑问,Rails 世界中,在 view 层,单单只想跳转到另外一个界面,而这个页面不是和 edit,show,无关,只是跳转到一个新的页面,也得配置路由,我只想让这个路由,起到跳转的作用,不知道该如何实现。就是 link,只是简单的跳转到指定页面,在 Rails 中,不会了。
直接将对应的方法,重写在 appliction.rb 引用,问题解决。
报错是 找到不到‘array_or_string_for_javascript’方法。
#7 楼 @flowerwrong 真的是真个锅。。。黄金锅。。谢谢
上面提到的 columns_hash.这里是取不到值,会报错,查看 API ‘Returns a hash of column objects for the table associated with this class’
无法匹配 oracle,对应的数据类型,这里如何解决?
3.2
沙发
还原 rails 3.2.21 版本,不会报此类错误,访问第三方 oracle 服务器,获取数据正常显示。
rails3 版本,此段代码没有任何没问题,返回正常,页面也正常。是因为使用的 activerecord-3.2.21,涉及到的 gem 里面的 function 逻辑不同,不需要获取 column_type。
def find_by_sql(sql, binds = [])
logging_query_plan do
connection.select_all(sanitize_sql(sql), "#{name} Load", binds).collect! { |record| instantiate(record) }
end
end
activerecord-5.0.0.1 此段代码
def find_by_sql(sql, binds = [], preparable: nil)
result_set = connection.select_all(sanitize_sql(sql), "#{name} Load", binds, preparable: preparable)
column_types = result_set.column_types.dup
columns_hash.each_key { |k| column_types.delete k }
message_bus = ActiveSupport::Notifications.instrumenter
payload = {
record_count: result_set.length,
class_name: name
}
message_bus.instrument('instantiation.active_record', payload) do
result_set.map { |record| instantiate(record, column_types) }
end
end
不管 gem 底层如何处理的,这个和使用者无关,现在这个问题方向---去 oracle 数据库中涉及 table-RPTHEAD,找原因? 这个也许不是好的方向。因为已经跨服务器了,其他平台也在用这个 table,况且对应的 sql 在 oracle 里面单独查询,没有问题,返回正常。
上面 log 提到的
(3224.6ms) SELECT column_name AS name, data_type AS sql_type, data_default, nullable, virtual_column, hidden_column, data_type_owner AS sql_type_owner, DECODE(data_type, 'NUMBER', data_precision, 'FLOAT', data_precision, 'VARCHAR2', DECODE(char_used, 'C', char_length, data_length), 'RAW', DECODE(char_used, 'C', char_length, data_length), 'CHAR', DECODE(char_used, 'C', char_length, data_length), NULL) AS limit, DECODE(data_type, 'NUMBER', data_scale, NULL) AS scale FROM all_tab_cols WHERE owner = 'BUG' AND table_name = 'RPTHEAD' AND hidden_column = 'NO' ORDER BY column_id
SQL 单独拿出来在 oracle 数据库查询,返回结果是正确的。也就是问题出现在中间代码,转化 column_type 出了问题。但是我想这个是 gem,自身需要做的工作,使用者不需要去修改 gem 吧。。。。
上面提到的 result_set 返回结果
<ActiveRecord::Result:0x007fa88df12bc8
@columns=["rptno", "subject", "status", "pri_for_dev", "programmer", "customer"],
@rows=[[15903810, "ENH RESTRICT UPDATE/DELETE/CORRECTION OF ABSENCE BASED ON A RULES/CRITERIA"
, 97, nil, ....]]
@hash_rows=nil, @column_types={}>
这里@column_types={} 返回为空,所以后续的代码
column_types = result_set.column_types.dup
返回为{},导致后面 Exception
#2 楼 @flingfox63 因为很多页面都报这种错,没明白为什么报这种错。查找到对应的 gem---activerecord (5.0.0.1) 报错地方“delegate :precision, :scale, :limit, :type, :sql_type, to: :sql_type_metadata, allow_nil: true”
已找到的解决办法,application.rb 中,未加载 gem. Bundler.require(:default, Rails.env) if defined?(Bundler)
haml 一直有,上面没有贴 ... *** LOCAL GEMS ***
aasm (4.11.0) actioncable (5.0.0.1) actionmailer (5.0.0.1, 4.2.7) actionpack (5.0.0.1, 4.2.7.1, 4.2.7) actionview (5.0.0.1, 4.2.7.1, 4.2.7) activejob (5.0.0.1, 4.2.7) activemodel (5.0.0.1, 4.2.7) activemodel-serializers-xml (1.0.1) activerecord (5.0.0.1, 4.2.7) activerecord-oracle_enhanced-adapter (1.7.1, 1.5.6, 1.4.3) activesupport (5.0.0.1, 4.2.7.1, 4.2.7) acts_as_reportable (1.1.1) acts_as_tree (2.5.1) acts_as_votable (0.10.0) arel (7.1.1, 6.0.3) awesome_print (1.7.0) bcrypt (3.1.11) bigdecimal (1.2.8) builder (3.2.2) bundle (0.0.1) bundler (1.13.0, 1.12.5) byebug (9.0.5) choice (0.2.0) chronic (0.10.2) chunky_png (1.3.7) climate_control (0.0.3) cocaine (0.5.8) coffee-rails (4.2.1) coffee-script (2.4.1) coffee-script-source (1.10.0) color (1.8) compass (1.0.3) compass-core (1.0.3) compass-import-once (1.0.5) concurrent-ruby (1.0.2) devise (4.2.0) did_you_mean (1.0.2, 1.0.0) dynamic_form (1.1.4) enumerize (2.0.0) erubis (2.7.0) execjs (2.7.0) fastercsv (1.5.5) ffi (1.9.14) font-awesome-rails (4.6.3.1) globalid (0.3.7) haml (4.1.0.beta.1, 4.0.7) haml-contrib (1.0.0.1) haml-rails (0.9.0) hashie (3.4.4) html2haml (2.0.0) i18n (0.7.0) io-console (0.4.6, 0.4.5) jquery-rails (4.2.1) jquery-ui-rails (5.0.5) json (2.0.2, 1.8.3) kaminari (0.17.0) loofah (2.0.3) mail (2.6.4) method_source (0.8.2) mime-types (3.1) mime-types-data (3.2016.0521) mimemagic (0.3.2) mini_portile2 (2.1.0) minitest (5.9.0, 5.8.3) multi_json (1.12.1) mysql2 (0.4.4) nested_form (0.3.2) net-telnet (0.1.1) nio4r (1.2.1) nokogiri (1.6.8) omniauth (1.3.1) orm_adapter (0.5.0) paper_trail (5.2.2, 5.2.1) paperclip (5.1.0) pdf-writer (1.1.8) pkg-config (1.1.7) power_assert (0.3.1, 0.2.6) pr_geohash (1.0.0) protected_attributes (1.1.3) psych (2.1.1, 2.0.17) quiet_assets (1.1.0) rack (2.0.1, 1.6.4) rack-pjax (1.0.0, 0.8.0) rack-test (0.6.3) rails (5.0.0.1, 4.2.7) rails-controller-testing (1.0.1) rails-deprecated_sanitizer (1.0.3) rails-dom-testing (2.0.1, 1.0.7) rails-erd (1.5.0) rails-html-sanitizer (1.0.3) rails-observers (0.1.2) rails_admin (0.8.1) railties (5.0.0.1, 4.2.7.1, 4.2.7) rake (11.2.2, 10.4.2) rank (0.0.2) rb-fsevent (0.9.7) rb-inotify (0.9.7) rdoc (4.2.2, 4.2.1) remotipart (1.2.1) request_store (1.3.1) responders (2.3.0) rsolr (1.1.2, 1.0.13) ruby-graphviz (1.2.2) ruby-oci8 (2.2.2) ruby-plsql (0.6.0) ruby_parser (3.8.2) ruport (1.6.3) safe_yaml (1.0.4) sass (3.4.22) sass-rails (5.0.6) sexp_processor (4.7.0) sprockets (3.7.0) sprockets-rails (3.2.0) sunspot (2.2.6, 2.0.0.pre.130115) sunspot_rails (2.2.6, 2.0.0.pre.130115) sunspot_solr (2.2.6, 1.3.3) test-unit (3.2.1, 3.1.5) thor (0.19.1) thread_safe (0.3.5) tilt (2.0.5) transaction-simple (1.4.0.2) turbolinks (5.0.1) turbolinks-source (5.0.0) tzinfo (1.2.2) uglifier (3.0.2) warden (1.2.6) websocket-driver (0.6.4) websocket-extensions (0.1.2) whenever (0.9.7) will_paginate (3.1.0) ...