diff --git a/app/assets/javascripts/problems.js.coffee b/app/assets/javascripts/translations.js.coffee
similarity index 100%
rename from app/assets/javascripts/problems.js.coffee
rename to app/assets/javascripts/translations.js.coffee
diff --git a/app/assets/stylesheets/problems.css.scss b/app/assets/stylesheets/translations.css.scss
similarity index 63%
rename from app/assets/stylesheets/problems.css.scss
rename to app/assets/stylesheets/translations.css.scss
index 7f0de10..5ede2fe 100644
--- a/app/assets/stylesheets/problems.css.scss
+++ b/app/assets/stylesheets/translations.css.scss
@@ -1,3 +1,3 @@
-// Place all the styles related to the Problems controller here.
+// Place all the styles related to the Translations controller here.
// They will automatically be included in application.css.scss.
// You can use Sass (SCSS) here: http://sass-lang.com/
diff --git a/app/controllers/problems_controller.rb b/app/controllers/problems_controller.rb
deleted file mode 100644
index e516ac4..0000000
--- a/app/controllers/problems_controller.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-class ProblemsController < ApplicationController
- before_action :set_problem, only: [:show, :edit, :update, :destroy]
-
- # GET /problems
- # GET /problems.json
- def index
- @problems = Problem.paginate(page: params[:page])
- end
-
- # GET /problems/1
- # GET /problems/1.json
- def show
- end
-
- # GET /problems/new
- def new
- @problem = Problem.new
- end
-
- # GET /problems/1/edit
- def edit
- end
-
- # POST /problems
- # POST /problems.json
- def create
- @problem = Problem.new(problem_params)
-
- respond_to do |format|
- if @problem.save
- format.html { redirect_to @problem, notice: 'Problem was successfully created.' }
- format.json { render :show, status: :created, location: @problem }
- else
- format.html { render :new }
- format.json { render json: @problem.errors, status: :unprocessable_entity }
- end
- end
- end
-
- # PATCH/PUT /problems/1
- # PATCH/PUT /problems/1.json
- def update
- respond_to do |format|
- if @problem.update(problem_params)
- format.html { redirect_to @problem, notice: 'Problem was successfully updated.' }
- format.json { render :show, status: :ok, location: @problem }
- else
- format.html { render :edit }
- format.json { render json: @problem.errors, status: :unprocessable_entity }
- end
- end
- end
-
- # DELETE /problems/1
- # DELETE /problems/1.json
- def destroy
- @problem.destroy
- respond_to do |format|
- format.html { redirect_to problems_url, notice: 'Problem was successfully destroyed.' }
- format.json { head :no_content }
- end
- end
-
- private
- # Use callbacks to share common setup or constraints between actions.
- def set_problem
- @problem = Problem.find(params[:id])
- end
-
- # Never trust parameters from the scary internet, only allow the white list through.
- def problem_params
- params.require(:problem).permit(:title, :content)
- end
-end
diff --git a/app/controllers/translations_controller.rb b/app/controllers/translations_controller.rb
new file mode 100644
index 0000000..cf1a62a
--- /dev/null
+++ b/app/controllers/translations_controller.rb
@@ -0,0 +1,74 @@
+class TranslationsController < ApplicationController
+ before_action :set_translation, only: [:show, :edit, :update, :destroy]
+
+ # GET /translations
+ # GET /translations.json
+ def index
+ @translations = Translation.paginate(page: params[:page])
+ end
+
+ # GET /translations/1
+ # GET /translations/1.json
+ def show
+ end
+
+ # GET /translations/new
+ def new
+ @translation = Translation.new
+ end
+
+ # GET /translations/1/edit
+ def edit
+ end
+
+ # POST /translations
+ # POST /translations.json
+ def create
+ @translation = Translation.new(translation_params)
+
+ respond_to do |format|
+ if @translation.save
+ format.html { redirect_to @translation, notice: 'Translation was successfully created.' }
+ format.json { render :show, status: :created, location: @translation }
+ else
+ format.html { render :new }
+ format.json { render json: @translation.errors, status: :unprocessable_entity }
+ end
+ end
+ end
+
+ # PATCH/PUT /translations/1
+ # PATCH/PUT /translations/1.json
+ def update
+ respond_to do |format|
+ if @translation.update(translation_params)
+ format.html { redirect_to @translation, notice: 'Translation was successfully updated.' }
+ format.json { render :show, status: :ok, location: @translation }
+ else
+ format.html { render :edit }
+ format.json { render json: @translation.errors, status: :unprocessable_entity }
+ end
+ end
+ end
+
+ # DELETE /translations/1
+ # DELETE /translations/1.json
+ def destroy
+ @translation.destroy
+ respond_to do |format|
+ format.html { redirect_to translations_url, notice: 'Translation was successfully destroyed.' }
+ format.json { head :no_content }
+ end
+ end
+
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_translation
+ @translation = Translation.find(params[:id])
+ end
+
+ # Never trust parameters from the scary internet, only allow the white list through.
+ def translation_params
+ params.require(:translation).permit(:title, :content)
+ end
+end
diff --git a/app/helpers/problems_helper.rb b/app/helpers/problems_helper.rb
deleted file mode 100644
index 6989835..0000000
--- a/app/helpers/problems_helper.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-module ProblemsHelper
-end
diff --git a/app/helpers/translations_helper.rb b/app/helpers/translations_helper.rb
new file mode 100644
index 0000000..ed0bd96
--- /dev/null
+++ b/app/helpers/translations_helper.rb
@@ -0,0 +1,2 @@
+module TranslationsHelper
+end
diff --git a/app/models/problem.rb b/app/models/translation.rb
similarity index 82%
rename from app/models/problem.rb
rename to app/models/translation.rb
index 981dc01..628d87e 100644
--- a/app/models/problem.rb
+++ b/app/models/translation.rb
@@ -1,4 +1,4 @@
-class Problem < ActiveRecord::Base
+class Translation < ActiveRecord::Base
validates :title, :content, presence: true
validates :title, uniqueness: true
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index a24b5e2..7e0db88 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -13,7 +13,7 @@
<% end %>
<%= horizontal do %>
<%= nav class: 'navbar-left' do %>
- <%= link_to 'Probleme', problems_path %>
+ <%= link_to 'Translations', translations_path %>
<% end %>
<% end %>
<% end %>
diff --git a/app/views/problems/_problem_pagination.html.erb b/app/views/problems/_problem_pagination.html.erb
deleted file mode 100644
index 4df9095..0000000
--- a/app/views/problems/_problem_pagination.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<%= will_paginate @problems, renderer: BootstrapPagination::Rails %>
\ No newline at end of file
diff --git a/app/views/problems/edit.html.erb b/app/views/problems/edit.html.erb
deleted file mode 100644
index 92e7277..0000000
--- a/app/views/problems/edit.html.erb
+++ /dev/null
@@ -1,6 +0,0 @@
-
Editing problem
-
-<%= render 'form' %>
-
-<%= link_to 'Show', @problem %> |
-<%= link_to 'Back', problems_path %>
diff --git a/app/views/problems/index.html.erb b/app/views/problems/index.html.erb
deleted file mode 100644
index fd5875b..0000000
--- a/app/views/problems/index.html.erb
+++ /dev/null
@@ -1,24 +0,0 @@
-Listing problems
-
-<%= render 'problem_pagination' %>
-
-
-
- | ID |
- Title |
-
-
-
-
- <% @problems.each do |problem| %>
-
- | <%= problem.id %> |
- <%= link_to problem.title, problem %> |
-
- <% end %>
-
-
-<%= render 'problem_pagination' %>
-
-
-<%= link_to 'New Problem', new_problem_path, class: 'btn btn-default' %>
diff --git a/app/views/problems/index.json.jbuilder b/app/views/problems/index.json.jbuilder
deleted file mode 100644
index 493111a..0000000
--- a/app/views/problems/index.json.jbuilder
+++ /dev/null
@@ -1,4 +0,0 @@
-json.array!(@problems) do |problem|
- json.extract! problem, :id, :title, :content
- json.url problem_url(problem, format: :json)
-end
diff --git a/app/views/problems/new.html.erb b/app/views/problems/new.html.erb
deleted file mode 100644
index 1c1b2ee..0000000
--- a/app/views/problems/new.html.erb
+++ /dev/null
@@ -1,5 +0,0 @@
-New problem
-
-<%= render 'form' %>
-
-<%= link_to 'Back', problems_path %>
diff --git a/app/views/problems/show.html.erb b/app/views/problems/show.html.erb
deleted file mode 100644
index 38e4f41..0000000
--- a/app/views/problems/show.html.erb
+++ /dev/null
@@ -1,17 +0,0 @@
-<% if notice %>
- <%= notice %>
-<% end %>
-
-
-
-<%= panel do %>
-
- <%= sanitize @problem.content %>
-
-<% end %>
-
- <%= link_to 'Dieses Problem auf projecteuler.net', @problem.original_url, target: '_blank' %>
-
-<%= link_to 'Edit', edit_problem_path(@problem), class: 'btn btn-default' %>
diff --git a/app/views/problems/show.json.jbuilder b/app/views/problems/show.json.jbuilder
deleted file mode 100644
index f9ddbe9..0000000
--- a/app/views/problems/show.json.jbuilder
+++ /dev/null
@@ -1 +0,0 @@
-json.extract! @problem, :id, :title, :content, :created_at, :updated_at
diff --git a/app/views/problems/_form.html.erb b/app/views/translations/_form.html.erb
similarity index 60%
rename from app/views/problems/_form.html.erb
rename to app/views/translations/_form.html.erb
index 969825d..9656465 100644
--- a/app/views/problems/_form.html.erb
+++ b/app/views/translations/_form.html.erb
@@ -1,10 +1,10 @@
-<%= form_for(@problem) do |f| %>
- <% if @problem.errors.any? %>
+<%= form_for(@translation) do |f| %>
+ <% if @translation.errors.any? %>
-
<%= pluralize(@problem.errors.count, "error") %> prohibited this problem from being saved:
+
<%= pluralize(@translation.errors.count, "error") %> prohibited this problem from being saved:
- <% @problem.errors.full_messages.each do |message| %>
+ <% @translation.errors.full_messages.each do |message| %>
- <%= message %>
<% end %>
diff --git a/app/views/translations/_translation_pagination.html.erb b/app/views/translations/_translation_pagination.html.erb
new file mode 100644
index 0000000..d6e5b41
--- /dev/null
+++ b/app/views/translations/_translation_pagination.html.erb
@@ -0,0 +1 @@
+<%= will_paginate @translations, renderer: BootstrapPagination::Rails %>
\ No newline at end of file
diff --git a/app/views/translations/edit.html.erb b/app/views/translations/edit.html.erb
new file mode 100644
index 0000000..b8dc5aa
--- /dev/null
+++ b/app/views/translations/edit.html.erb
@@ -0,0 +1,6 @@
+
Editing translation
+
+<%= render 'form' %>
+
+<%= link_to 'Show', @translation %> |
+<%= link_to 'Back', translations_path %>
diff --git a/app/views/translations/index.html.erb b/app/views/translations/index.html.erb
new file mode 100644
index 0000000..02764f1
--- /dev/null
+++ b/app/views/translations/index.html.erb
@@ -0,0 +1,24 @@
+
Listing translations
+
+<%= render 'translation_pagination' %>
+
+
+
+ | ID |
+ Title |
+
+
+
+
+ <% @translations.each do |translation| %>
+
+ | <%= translation.id %> |
+ <%= link_to translation.title, translation %> |
+
+ <% end %>
+
+
+<%= render 'translation_pagination' %>
+
+
+<%= link_to 'New Translation', new_translation_path, class: 'btn btn-default' %>
diff --git a/app/views/translations/index.json.jbuilder b/app/views/translations/index.json.jbuilder
new file mode 100644
index 0000000..890e1ea
--- /dev/null
+++ b/app/views/translations/index.json.jbuilder
@@ -0,0 +1,4 @@
+json.array!(@translations) do |translation|
+ json.extract! translation, :id, :title, :content
+ json.url translation_url(translation, format: :json)
+end
diff --git a/app/views/translations/new.html.erb b/app/views/translations/new.html.erb
new file mode 100644
index 0000000..45f1fd9
--- /dev/null
+++ b/app/views/translations/new.html.erb
@@ -0,0 +1,5 @@
+
New translation
+
+<%= render 'form' %>
+
+<%= link_to 'Back', translations_path %>
diff --git a/app/views/translations/show.html.erb b/app/views/translations/show.html.erb
new file mode 100644
index 0000000..a58c437
--- /dev/null
+++ b/app/views/translations/show.html.erb
@@ -0,0 +1,17 @@
+<% if notice %>
+
<%= notice %>
+<% end %>
+
+
+
+<%= panel do %>
+
+ <%= sanitize @translation.content %>
+
+<% end %>
+
+ <%= link_to 'Dieses Problem auf projecteuler.net', @translation.original_url, target: '_blank' %>
+
+<%= link_to 'Edit', edit_translation_path(@translation), class: 'btn btn-default' %>
diff --git a/app/views/translations/show.json.jbuilder b/app/views/translations/show.json.jbuilder
new file mode 100644
index 0000000..10b6296
--- /dev/null
+++ b/app/views/translations/show.json.jbuilder
@@ -0,0 +1 @@
+json.extract! @translation, :id, :title, :content, :created_at, :updated_at
diff --git a/config/routes.rb b/config/routes.rb
index 7b67086..c167245 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,11 +1,11 @@
Rails.application.routes.draw do
- resources :problems
+ resources :translations
# The priority is based upon order of creation: first created -> highest priority.
# See how all your routes lay out with "rake routes".
# You can have the root of your site routed with "root"
- root 'problems#index'
+ root 'translations#index'
# Example of regular route:
# get 'products/:id' => 'catalog#view'
diff --git a/db/migrate/20141213151812_rename_problems_table_to_translations.rb b/db/migrate/20141213151812_rename_problems_table_to_translations.rb
new file mode 100644
index 0000000..801a1cc
--- /dev/null
+++ b/db/migrate/20141213151812_rename_problems_table_to_translations.rb
@@ -0,0 +1,5 @@
+class RenameProblemsTableToTranslations < ActiveRecord::Migration
+ def change
+ rename_table :problems, :translations
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index c07b7d5..8d34b2c 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,9 +11,9 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20141130153941) do
+ActiveRecord::Schema.define(version: 20141213151812) do
- create_table "problems", force: true do |t|
+ create_table "translations", force: true do |t|
t.string "title"
t.text "content"
t.datetime "created_at"
diff --git a/db/seeds.rb b/db/seeds.rb
index 6fe1353..d58d337 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -7,7 +7,7 @@
# Mayor.create(name: 'Emanuel', city: cities.first)
for i in 1..103 do
- Problem.create(
+ Translation.create(
title: "Problem Nummer #{i}",
content: "Das hier ist der Inhalt von
Problem #{i}.
Hier ist die zweite Zeile."
)
diff --git a/test/controllers/problems_controller_test.rb b/test/controllers/problems_controller_test.rb
deleted file mode 100644
index 64d1f2a..0000000
--- a/test/controllers/problems_controller_test.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'test_helper'
-
-class ProblemsControllerTest < ActionController::TestCase
- setup do
- @problem = problems(:one)
- @update = {
- title: 'New title',
- content: 'This is the new content'
- }
- end
-
- test "should get index" do
- get :index
- assert_response :success
- assert_not_nil assigns(:problems)
- end
-
- test "should get new" do
- get :new
- assert_response :success
- end
-
- test "should create problem" do
- assert_difference('Problem.count') do
- post :create, problem: @update
- end
-
- assert_redirected_to problem_path(assigns(:problem))
- end
-
- test "should show problem" do
- get :show, id: @problem
- assert_response :success
- end
-
- test "should get edit" do
- get :edit, id: @problem
- assert_response :success
- end
-
- test "should update problem" do
- patch :update, id: @problem, problem: @update
- assert_redirected_to problem_path(assigns(:problem))
- end
-
- test "should destroy problem" do
- assert_difference('Problem.count', -1) do
- delete :destroy, id: @problem
- end
-
- assert_redirected_to problems_path
- end
-end
diff --git a/test/controllers/translations_controller_test.rb b/test/controllers/translations_controller_test.rb
new file mode 100644
index 0000000..61c7455
--- /dev/null
+++ b/test/controllers/translations_controller_test.rb
@@ -0,0 +1,53 @@
+require 'test_helper'
+
+class TranslationsControllerTest < ActionController::TestCase
+ setup do
+ @translation = translations(:one)
+ @update = {
+ title: 'New title',
+ content: 'This is the new content'
+ }
+ end
+
+ test "should get index" do
+ get :index
+ assert_response :success
+ assert_not_nil assigns(:translations)
+ end
+
+ test "should get new" do
+ get :new
+ assert_response :success
+ end
+
+ test "should create translation" do
+ assert_difference('Translation.count') do
+ post :create, translation: @update
+ end
+
+ assert_redirected_to translation_path(assigns(:translation))
+ end
+
+ test "should show translation" do
+ get :show, id: @translation
+ assert_response :success
+ end
+
+ test "should get edit" do
+ get :edit, id: @translation
+ assert_response :success
+ end
+
+ test "should update translation" do
+ patch :update, id: @translation, translation: @update
+ assert_redirected_to translation_path(assigns(:translation))
+ end
+
+ test "should destroy translation" do
+ assert_difference('Translation.count', -1) do
+ delete :destroy, id: @translation
+ end
+
+ assert_redirected_to translations_path
+ end
+end
diff --git a/test/fixtures/problems.yml b/test/fixtures/translations.yml
similarity index 61%
rename from test/fixtures/problems.yml
rename to test/fixtures/translations.yml
index 0e8e4a7..68398c1 100644
--- a/test/fixtures/problems.yml
+++ b/test/fixtures/translations.yml
@@ -2,8 +2,8 @@
one:
title: First title
- content: The content of the problem
+ content: The content of the translation
two:
title: Second title
- content: The content of the second problem
+ content: The content of the second translation
diff --git a/test/helpers/problems_helper_test.rb b/test/helpers/problems_helper_test.rb
deleted file mode 100644
index 1de2c21..0000000
--- a/test/helpers/problems_helper_test.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-require 'test_helper'
-
-class ProblemsHelperTest < ActionView::TestCase
-end
diff --git a/test/helpers/translations_helper_test.rb b/test/helpers/translations_helper_test.rb
new file mode 100644
index 0000000..346380b
--- /dev/null
+++ b/test/helpers/translations_helper_test.rb
@@ -0,0 +1,4 @@
+require 'test_helper'
+
+class TranslationsHelperTest < ActionView::TestCase
+end
diff --git a/test/models/problem_test.rb b/test/models/problem_test.rb
deleted file mode 100644
index 83e1d8c..0000000
--- a/test/models/problem_test.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-require 'test_helper'
-
-class ProblemTest < ActiveSupport::TestCase
- test "should not save problem without title" do
- problem = Problem.new(content: 'This is some content')
- assert_not problem.save
- end
-
- test "should not save problem without content" do
- problem = Problem.new(title: 'Problem title')
- assert_not problem.save
- end
-
- test "should not save problem with duplicate title" do
- problem = Problem.new(
- title: problems(:one).title,
- content: 'This is some content'
- )
- assert_not problem.save
- end
-
- test "should save correct problem" do
- problem = Problem.new(
- title: 'A unique title',
- content: 'Some content'
- )
- assert problem.save
- end
-
- test "should have correct original url" do
- first = Problem.first
- assert_equal "https://projecteuler.net/problem=#{first.id}", first.original_url
- end
-end
diff --git a/test/models/translation_test.rb b/test/models/translation_test.rb
new file mode 100644
index 0000000..57c79d9
--- /dev/null
+++ b/test/models/translation_test.rb
@@ -0,0 +1,34 @@
+require 'test_helper'
+
+class TranslationTest < ActiveSupport::TestCase
+ test "should not save translation without title" do
+ translation = Translation.new(content: 'This is some content')
+ assert_not translation.save
+ end
+
+ test "should not save translation without content" do
+ translation = Translation.new(title: 'Translation title')
+ assert_not translation.save
+ end
+
+ test "should not save translation with duplicate title" do
+ translation = Translation.new(
+ title: translations(:one).title,
+ content: 'This is some content'
+ )
+ assert_not translation.save
+ end
+
+ test "should save correct translation" do
+ translation = Translation.new(
+ title: 'A unique title',
+ content: 'Some content'
+ )
+ assert translation.save
+ end
+
+ test "should have correct original url" do
+ first = Translation.first
+ assert_equal "https://projecteuler.net/problem=#{first.id}", first.original_url
+ end
+end