Tout d'abord bien le bonjour a tout le monde. Je suis tout neuf sur rails et croyez bien que j'ai effectué de nombreuses recherches avant de demander de l'aide.
Alors voila, j'expose mon problème. Je voudrais faire une application toute simple en rails utilisant une base de données pré-existante. Cette base de données ne peu en aucun cas être modifié ou édité, car elle est utilisé par un autre programme dont je ne suis pas responsable.
Mon objectif est pour le moment très simple: afficher les informations de cette BD dans une simple vue. Et pourtant rien n'est simple !
Ma base de données (MySQL) s'appelle alarm et la table qui je veux afficher également. Le problème majeur est que l'identifiant de cette table (id) est un varchar de type "Alarm.rpf.1202753583966". Rails n'aimant pas les strings pour les identifiants, je dois donc le convertir. La chance me souris car la partie chiffre de chaque id est unique. J'ai donc écris le petit model suivant:
class Alarm < ActiveRecord::Base
set_table_name "alarm"
set_primary_key "id"
def id
self.id.split('.').last().to_i
end
def to_param
"#{self.id}"
end
end
Ensuite j'ai un controller:
class AlarmsController < ApplicationController
def index
@alarms = Alarm.find(:all)
end
end
Puis une vue:
<% for alarm in @alarms %>
<tr>
<td><%=h alarm.id %></td>
</tr>
<% end %>
Avec tout ce joli bazar, j'obtiens lorsque je tente d'afficher l'index:
SystemStackError in Alarms#index
Showing alarms/index.html.erb where line #9 raised:
stack level too deep
Extracted source (around line #9):
6:
7:
8:
9:
10:
11:
12: 'Are you sure?', :method => :delete %>
RAILS_ROOT: F:/work/alarmManager
Application Trace | Framework Trace | Full Trace
app/models/alarm.rb:5:in `id'
app/models/alarm.rb:5:in `id'
app/views/alarms/index.html.erb:9:in `_run_erb_47app47views47alarms47index46html46erb'
app/views/alarms/index.html.erb:7:in `each'
app/views/alarms/index.html.erb:7:in `_run_erb_47app47views47alarms47index46html46erb'
Si je change l'identifiant de la table, cela marche alors très bien mais j'ai malheureusement besoin d'utiliser ce string comme identifiant.
Je ne comprend pas trop l'erreur que j'ai et suis a l'écoute de toute suggestion.
Merci d'avance.
|
il y a 7 heures 34 min
il y a 9 heures 55 min
il y a 1 jour 19 heures
il y a 4 jours 1 heure
il y a 6 jours 14 heures
il y a 6 jours 15 heures
il y a 6 jours 15 heures
il y a 6 jours 19 heures
il y a 1 semaine 13 heures
il y a 1 semaine 13 heures