• JSON vs. HTML (XML?). Что использовать в AJAX запросе?

    @TM_ID
    "Двойная работа получается" в любом случае.
    Нам нужно создавать/отдавать данные и нам нужно получать/показывать данные.
    За что отвечает бек а за что фронт выбирать вам, но удобней и правильней иметь api по которому фронт сможет получить необходимые данные и показать их в нужных местах и с нужной красотой.

    Например нам нужно получить список книг:
    get /books

    получим в ответе:

    {
      items: [
        {
          id: 0,
          name: "Book0"
        },
        {
          id: 1,
          name: "Book1"
        }
      ]
    }

    А если мы захотим узнать количество всех книг?
    Просто добавим в ответ "totalResults: 50" и в шаблоне на фронте их отобразим (если нужно), аля:

    <div class="books-total">{books.totalResults}</div>

    А если шаблонов много и они разные?
    А если вы хотите показать график с этими книгами? А если этих графиков десятки?
    А если нужно в определенный момент показать пагинацию?
    итд.

    Рекомендую посмотреть на api googl'a или digitalocean.
    Ответ написан
    Комментировать
  • Что не так в этом коде перелистывания страниц?

    @TM_ID
    Что не так - ужасный стайл-код;
    И, скорее всего, вам нужно забиндить ивент для клика на нужные элементы.

    $('.next1').bind('click', function(){
       // код
        return false;
    });
    Ответ написан
  • Какой есть хороший мануал по настройке сервера для rails-приложения?

    @TM_ID
    Я настраиваю сервер так:

    Первым делом создаю non-root, sudoer пользователя с которого все устанавливаю и деплою(через capistrano, например).

    # non-root user
    useradd -d /home/deployer -m deployer
    # password for deployer
    passwd deployer
    # deployer a sudoer
    visudo
    deployer ALL=(ALL) ALL

    Логинимся как deployer

    Устанавливаю RVM.
    # RVM
    \curl -sSL https://get.rvm.io | bash -s stable
    # RVM requirements
    rvm requirements

    Через RVM ставлю Ruby.
    # Ruby
    rvm install 2.1.2
    rvm use 2.1.2 --default

    Rails без доков(--no-document)
    # Rails
    gem install rails 4.1.0 --no-document

    NodeJS для js runtime
    # ExecJS NodeJS Javascript runtime
    sudo apt-get install nodejs

    MySQL/PostgreSQL

    Apache
    # Install Apache packs
    sudo apt-get install apache2 curl git build-essential zlibc zlib1g-dev zlib1g libcurl4-openssl-dev libssl-dev libopenssl-ruby apache2-prefork-dev libapr1-dev libaprutil1-dev libreadline6 libreadline6-dev


    Passenger
    # Passenger
    gem install passenger
    # Apache module
    passenger-install-apache2-module

    Настройка Apache
    # etc/apache2/mods-available/passenger.load
    LoadModule passenger_module /home/deployer/.rvm/gems/ruby-2.1.2/gems/passenger-4.0.37/buildout/apache2/mod_passenger.so


    # etc/apache2/mods-available/passenger.conf
    <IfModule mod_passenger.c>
         PassengerRoot /home/deployer/.rvm/gems/ruby-2.1.2/gems/passenger-4.0.37
         PassengerDefaultRuby /home/deployer/.rvm/gems/ruby-2.1.2/wrappers/ruby
    </IfModule>


    Активируем модуль пассажира для апач
    sudo a2enmod passenger

    Хост для апач
    # etc/apache2/sites-available/sitename
    <VirtualHost *:80>
      ServerName sitename.com
      DocumentRoot /home/deployer/ror_apps/sitename/current/public # путь для capistrano. либо свой
      <Directory /home/deployer/ror_apps/sitename/current/public>
         AllowOverride all
         Options -MultiViews
      </Directory>
    </VirtualHost>


    Активируем хост
    sudo a2ensite sitename

    Рестарт конфига Apache
    sudo service apache2 reload

    Далее настраиваем ssh ключи для деплоя и гита.
    Ставим и настраиваем capistrano и получаем удовольствие от деплоя.
    bundle exec cap deploy

    Есть вопросы - спрашивайте.
    Ответ написан
    1 комментарий
  • Как связать две таблицы в Rails?

    @TM_ID
    Модель Project
    class Project < ActiveRecord::Base
      has_many :tasks
    end

    Модель Task
    class Task < ActiveRecord::Base
      belongs_to :projects
    end
    Ответ написан
    Комментировать