Ich habe diesen Fehler erhalten, keine implizite Umwandlung von Symbol in Integer. Ich habe nach diesem Fehler gesucht, verstehe ihn aber nicht wirklich. Der Code befindet sich unten. Sobald es zu diesem kommt "wenn q [: text_field] .is? Array" das ist, wenn es den Fehler gibt und ich bin sicher, dass der Rest dieses Codes falsch ist. Aber keine Ahnung, wie man es beheben kann.keine implizite Umwandlung von Symbol in Integer, Rails 4
pages = Vovici::API.new(@pid).survey_structure
Dies ist ein Beispiel für die API-Daten, die ich mit dem obigen Code anrufe.
[{:q_fill_in=>
{:heading=>{:text=>"1"},
:instructions=>{:text=>nil},
:body=>{:text=>"Pac"},
:list_caption=>{:text=>{:@type=>"plain"}},
:total_label=>{:text=>"Total"},
:text_field=>
[{:label=>{:text=>"first"},
:preselection=>{:text=>{:@type=>"plain"}},
:symbol=>{:text=>{:@type=>"plain"}},
:@id=>"1",
:@dbheading=>"Q1_1",
:@row=>"0",
:@size=>"20",
:@xmltype=>"text",
:@required=>"false",
:@compare_expression=>"-1",
:@topic_first=>"true",
:@slider=>"false",
:@sliderstep=>"1",
:@published=>"true",
:@usecalendarpopup=>"true",
:@insert_symbol_left=>"false",
:@label_width=>"3",
:@text_area_width=>"9"},
{:label=>{:text=>"id"},
:preselection=>{:text=>{:@type=>"plain"}},
:symbol=>{:text=>{:@type=>"plain"}},
:@id=>"2",
:@dbheading=>"Q1_2",
:@row=>"0",
:@size=>"20",
:@xmltype=>"text",
:@required=>"false",
:@compare_expression=>"-1",
:@topic_first=>"true",
:@slider=>"false",
:@sliderstep=>"1",
:@published=>"true",
:@usecalendarpopup=>"true",
:@insert_symbol_left=>"false",
:@label_width=>"3",
:@text_area_width=>"9"}],
:@dbheading=>"Q1"}
Dies ist Code aus meiner rb Datei
def process
pages = Vovici::API.new(@pid).survey_structure
pages.each do |page|
if page[:q_fill_in]
process_fill_in(*page[:q_fill_in])
end
end
end
def process_fill_in(*questions)
questions.each do |q|
if q[:text_field].is? Array
sub_qs = q[:text_field]
else
sub_qs = [q[:text_field]]
end
q_text = clean_question_text(q[:body][:text])
sub_qs.each do |sq|
sub_text = clean_question_text(sq[:label][:text])
q_name = [q_text, sub_text.reject { |i| i.nil? || i.empty? }.join("--")]
@survey.questions.create!(qheader: sq[:@dbheading], qtext: q_name)
end
end
end
def clean_question_text(text)
match = /( )?(<.*?>)?(.+)( )?(<\/.*>)?/.match(text)
match[3]
end
Kann jemand bitte helfen?
Ich habe es so gemacht, weil von den api-Daten Sie eine Reihe von Hashes sehen, aber offensichtlich ist das falsch. Haben Sie irgendwelche Vorschläge, was ich tun kann, um es zu beheben? –
Soweit ich das sagen kann, brauchen Sie diesen Splat überhaupt nicht (und wahrscheinlich auch nicht in process_fill_in). –