Я новичок в ROR, но быстро догоняю.Я работаю над этой проблемой уже пару часов, и это похоже на ошибку.Я не имею никакого смысла.
У меня есть база данных со следующей миграцией:
class CreateWebsites < ActiveRecord::Migration
def self.up
create_table :websites do |t|
t.string :name
t.integer :estimated_value
t.string :webhost
t.string :purpose
t.string :description
t.string :tagline
t.string :url
t.integer :adsense
t.integer :tradedoubler
t.integer :affiliator
t.integer :adsense_cpm
t.boolean :released
t.string :empire_type
t.string :oldid
t.string :old_outlink_policy
t.string :old_inlink_policy
t.string :old_priority
t.string :old_profitability
t.integer :priority_id
t.integer :project_id
t.integer :outlink_policy_id
t.integer :inlink_policy_id
t.timestamps
end
end
def self.down
drop_table :websites
end
end
Я проверил, что в базе данных также создаются целые числа, строки и т. Д.Миграция.
Я не прикасался к контроллеру после его генерации через скаффолд, т.е. это стандартный контроллер с шоу, индексом и т. д.
Сейчас.Когда я ввожу данные в базу данных, через веб-форму, в консоли rails или непосредственно в базе данных - например, www.domain.com для url или 500 для adsense - этобудет создан в БД без проблем.
Однако, когда он публикуется на сайте, переменные полностью сходят с ума.Adsense (целое число) превращается в дату, URL (строка) превращается в число с плавающей точкой и так далее.Это происходит только с несколькими переменными.
Это также создаст проблему с «аргументом вне диапазона», так как я ввожу 500, и Rails попытается вывести его как date => crash и «аргумент внеrange ".
Итак, как мне исправить / устранить проблему?Почему меняются форматы?Может ли это быть из-за response_to в контроллере?
Приветствия,
Christoffer
Контроллер:
class WebsitesController < ApplicationController
# GET /websites
# GET /websites.xml
def index
@websites = Website.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @websites }
end
end
# GET /websites/1
# GET /websites/1.xml
def show
@website = Website.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @website }
end
end
# GET /websites/new
# GET /websites/new.xml
def new
@website = Website.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @website }
end
end
# GET /websites/1/edit
def edit
@website = Website.find(params[:id])
end
# POST /websites
# POST /websites.xml
def create
@website = Website.new(params[:website])
respond_to do |format|
if @website.save
format.html { redirect_to(@website, :notice => 'Website was successfully created.') }
format.xml { render :xml => @website, :status => :created, :location => @website }
else
format.html { render :action => "new" }
format.xml { render :xml => @website.errors, :status => :unprocessable_entity }
end
end
end
# PUT /websites/1
# PUT /websites/1.xml
def update
@website = Website.find(params[:id])
respond_to do |format|
if @website.update_attributes(params[:website])
format.html { redirect_to(@website, :notice => 'Website was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @website.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /websites/1
# DELETE /websites/1.xml
def destroy
@website = Website.find(params[:id])
@website.destroy
respond_to do |format|
format.html { redirect_to(websites_url) }
format.xml { head :ok }
end
end
end
Просмотр:
<h1>Listing websites</h1>
<table>
<tr>
<th>Name</th>
<th>Estimated value</th>
<th>Webhost</th>
<th>Purpose</th>
<th>Description</th>
<th>Mail text</th>
<th>Adsense last year</th>
<th>Tradedoubler last year</th>
<th>Affiliator last year</th>
<th>Adsense cpm</th>
<th>Tagline</th>
<th>Url</th>
<th>Released</th>
<th>Empire type</th>
<th>Priority</th>
<th>Project</th>
<th>Outlink policy</th>
<th>Inlink policy</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @websites.each do |website| %>
<tr>
<td><%= website.name %></td>
<td><%= website.estimated_value %></td>
<td><%= website.webhost %></td>
<td><%= website.purpose %></td>
<td><%= website.description %></td>
<td><%= website.adsense %></td>
<td><%= website.tradedoubler %></td>
<td><%= website.affiliator %></td>
<td><%= website.adsense_cpm %></td>
<td><%= website.tagline %></td>
<td><%= website.url %></td>
<td><%= website.released %></td>
<td><%= website.empire_type %></td>
<td><%= website.priority_id %></td>
<td><%= website.project_id %></td>
<td><%= website.outlink_policy_id %></td>
<td><%= website.inlink_policy_id %></td>
<td><%= link_to 'Show', website %></td>
<td><%= link_to 'Edit', edit_website_path(website) %></td>
<td><%= link_to 'Destroy', website, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New Website', new_website_path %>
Вывод:
Name: Example.com
Estimated value: 1000
Webhost: Host.com
Purpose: Yada
Description: Yada yada
Adsense last year: 946684824
Tradedoubler last year: 0
Affiliator last year: 946684824
Adsense cpm:
Tagline:
Url: 0.0
Released: false
Empire type: 0
Priority:
Project:
Outlink policy:
Inlink policy:
Для этого вывода я использовал следующий вход:
Name: Example.com
Estimated value: 1000
Webhost: Host.com
Purpose: Yada
Desc: Yada yada
Adsense last year: 0
Tradedoubler last year: 0
Affiliator last year: 0
...
The rest of the fields I left blank
Обратите внимание, например, что URL был оставлен пустым (и создал выход 0.0),Тип империи был оставлен пустым и создал вывод 0.
Для дальнейшего уточнения, данные в базе данных являются ТОЧНЫМ моим входом.Это только вывод, который является неправильным.
Когда я возвращаюсь в режим редактирования.Вывод (значение по умолчанию) для "Adsense" и "Affiliator" показывает 2000-01-01 00:00:24 UTC .