I'm new to Rails.
I've been tring bootstrap-timepicker-rails gem in my Rails4 application but it's doesn't work.
https://github.com/tispratik/bootstrap-timepicker-rails
Gemfile
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.2'
gem 'twitter-bootstrap-rails'
gem 'bootstrap-timepicker-rails'
group :doc do
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', require: false
end
# Use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.1.2'
# Use unicorn as the app server
# gem 'unicorn'
# Use Capistrano for deployment
# gem 'capistrano', group: :development
# Use debugger
# gem 'debugger', group: [:development, :test]
application.js
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-timepicker
//= require_tree .
//= require_self
$('.t_picker').timepicker()
application.css
*= require_self
*= require bootstrap-timepicker
*= require_tree .
/event/_form.html.erb
<%= form_for(#event) do |f| %>
<% if #event.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(#event.errors.count, "error") %> prohibited this event from being saved:</h2>
<ul>
<% #event.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :location %><br>
<%= f.text_field :location %>
</div>
<div class="field">
<%= f.fields_for :schedules do |sch| %>
<%= sch.time_field :start %>
<%= sch.time_field :end %>
<%= sch.text_field :description %>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
I don't know if you still need this, but I made it work for me (Rails 4 app) by using the 'modal' template & setting specifically the id of my field, like this:
=f.input :time, as: :string, input_html: { class: 'bootstrap-timepicker', :id => 'time'}
& in the script, like this:
$('#time').timepicker({
minuteStep: 15,
etc etc..
Hope that helps :)
Try changing this:
<%= sch.time_field :start %>
<%= sch.time_field :end %>
to this:
<%= sch.time_field :start, class: 't_picker' %>
<%= sch.time_field :end, class: 't_picker' %>
Maybe it will help.
Related
i want to create database in ruby on rails.
This worked fine in the development environment.
but upload AWS lightsail, this occurred error.
What's the problem?
below using gem
source 'https://rubygems.org'
gem 'kaminari'
gem 'faker'
gem 'carrierwave'
gem 'fog-aws'
gem 'mini_magick'
gem 'devise'
gem 'sunspot_rails'
gem "bootstrap_form", ">= 4.0.0.alpha1"
gem 'rails', '5.0.6'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'figaro'
gem 'sunspot_solr'
gem 'sqlite3'
group :development, :test do
gem 'byebug'
end
group :development do
gem 'web-console', '~> 2.0'
gem 'spring'
end
below create controller
def create
#person = Person.new(params.require(:person).permit(:name, :phone, :relation, :user_id, :image))
if #person.save
redirect_to people_path
else
redirect_to new_person_path
end
end
below new.html.erb
<body class="main4">
<div class="container" style = "letter-spacing:-1px;">
<center><h2 class="mt-5">연락처 추가</h2></center>
<div style="font-weight: bold; display:flex; justify-content:center; margin-top: 10px; letter-spacing:-1px;">
<%= form_for :person, :html => { :multipart => true, name: "personForm", :onsubmit => "return validateform();"}, url: people_path do |f| %>
<div class="group">
<%= f.file_field :image %>
<span class="highlight"></span><span class="bar"></span>
</div>
<br/>
<div class="group">
<%= f.text_field :name , required: true %>
<span class="highlight"></span><span class="bar"></span>
<label>이름</label>
</div>
<br/>
<div class="group">
<%= f.number_field :phone , required: true %>
<span class="highlight"></span><span class="bar"></span>
<label>전화번호</label>
</div>
<br/>
<div class="group">
<span>관계    </span>
<%= f.select(:relation, ['가족', '친구', '지인', '직장동료', '거래처', '기타'], {:class => 'form-control'})%>
</div>
<%= f.hidden_field :user_id, value: current_user.id %>
<p style="text-align:right;"><%= f.button :추가, label: '추가', :class => 'btn btn-outline-light' %></p>
<% end %>
</div>
</div>
</div>
<script>
function validateform(){
var personName = document.personForm.person_name;
var personPhone = document.personForm.person_phone;
var personImage = document.personForm.person_image;
if(personName.value==""){
alert("이름이 입력되지 않았습니다.");
document.personForm.person_name.focus();
document.getElementById('person_name').select();
return false;
}
else if(personName.value.length > 4){
alert("이름은 4글자 이하로 작성해주세요.");
document.personForm.person_name.focus();
document.getElementById('person_name').select();
return false;
}
else if(personPhone.value==""){
alert("전화번호가 입력되지 않았습니다.");
document.personForm.person_phone.focus();
document.getElementById('person_phone').select();
return false;
}
}
</script>
</body>
below error scene in lightsail
enter image description here
Again, it works in the development environment, but if you put it on the AWS lightsail, i'm get this error
I want to implement a dual list box in a form using rails 4 that gets the column names from another table
I have googled for some examples and so far i have tried the example below but with no success. I just need a simple way to implement a dual list box that gets the column name it doesn't have to be this although this is looks pretty
http://geodan.github.io/duallistbox/sample-100.html.
Here is application.js
//= require bootstrap-sprockets
//= require jquery
//= require jquery_ujs
//= require bootstrap.min
//= require bootstrap
//= require turbolinks
//= require dataTables/jquery.dataTables
//= require dataTables/jquery.dataTables.bootstrap3
//= require_tree .
i have downloaded dual-list-box.js to my assets/javacrtipt from https://github.com/Geodan/DualListBox/
Here is my data_set.coffe
ready = ->
$('dualListBox').DualListBox();
return
$(document).ready ready
Here is my _form.html.erb
<%= form_for(#data_set) do |f| %>
<% if #data_set.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(#data_set.errors.count, "error") %> prohibited this data_set from being saved:</h2>
<ul>
<% #data_set.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name ,class:'form-control' %>
</div>
<div class="panel panel-default">
<div class="panel-heading">
Select Features
</div>
<div class="panel-body">
<select id="dualListBox">
</div>
</div>
<div class="actions">
<%= f.submit :class =>"btn btn-default" %>
</div>
<% end %>
My gem file
source 'https://rubygems.org'
gem 'rails', '4.2.5.1'
gem 'pg'
gem 'rails_12factor', group: :production
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'tzinfo-data', platforms: [:mingw, :mswin]
gem 'rails_refactor'
gem 'bcrypt', platforms: :ruby
gem 'bootstrap-sass'
gem 'sprockets-rails', '2.3.3'
gem 'devise'
gem 'jquery-datatables-rails', '~> 1.12.2'
EDIT:
my final result was this:
I am having problems with compatibility between bootstrap sprockets and jquery, so fonts are not loading,i have decided for now to stop working on this component.
$(document).ready ->
ready()
ready = ->
$('#dualListBox').DualListBox()
You have an element with id "dualListBox" so you need to use '#' in the jQuery selector.
Hope one of you can help me out on this one, since I've been breaking my head on it for a while.
I deployed my app to Heroku after trying it out on the cloud9 preview.
The problem is that whenever I try to press the button to create a account for a paid subscription, I don't get linked to the page to fill in my credentials. However, on cloud9 this seems to be working fine.
I found the the sole difference between the two by hovering over the same buttons on the different platforms with my mouse.
On cloud9 I get: https://xxxxxxxx-xxxxx.xxxxxxx.xx/users/sign_up?plan=1
On Heroku I get: https://xxxxxxxx-xxxx-xxxxx.herokuapp.com/sign_up
So whenever I click the one on Heroku, I get my build-in flash message saying: Please select a membership plan to sign up!
To be more specific whereas the problem lies according to me, I think it's somewhere in the home.html.erb where the variable gets passed through. (added below)
So it seems that the routing isn't working correct on my Heroku, but I just can't figure out why. I've added my files below.
Hope someone can help me out on this one!
Kind regards.
Gemfile
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.5'
# Use sqlite3 as the database for Active Record
gem 'sqlite3', group: [:development, :test]
# Use postgresql as the database for production
group :production do
gem 'pg'
gem 'rails_12factor'
end
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Unicorn as the app server
# gem 'unicorn'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> in views
gem 'web-console', '~> 2.0'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
end
### ADDED GEMS ###
# Bootstrap Gem
gem 'bootstrap-sass', '~> 3.3.6'
# Devise Gem
gem 'devise'
# Font Awesome
gem 'font-awesome-rails'
# Use stripe for handling payments
gem 'stripe'
# Use figaro to hide secret keys
gem 'figaro'
ruby '2.3.0'
routes.rb
Rails.application.routes.draw do
devise_for :users, controllers: { registrations: 'users/registrations' }
resources :users do
resource :profile
end
resources :contacts
get '/about' => 'pages#about'
root 'pages#home'
end
pages_controller.rb
class PagesController < ApplicationController
def home
#trial_plan = Plan.find_by id: '1'
#pro_plan = Plan.find_by id: '2'
end
def about
end
end
users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
before_filter :select_plan, only: :new
def create
super do |resource|
if params[:plan]
resource.plan_id = params[:plan]
if resource.plan_id == 2
resource.save_with_payment
else
resource.save
end
end
end
end
private
def select_plan
unless params[:plan] && (params[:plan] == '1' || params[:plan] == '2')
flash[:notice] = "Please select a membership plan to sign up."
redirect_to root_url
end
end
end
application.html.erb
<!DOCTYPE html>
<html>
<head>
<title>Ayris</title>
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_include_tag "https://js.stripe.com/v2/", type: 'text/javascript' %>
<%= javascript_include_tag 'application' %>
<%= tag :meta, :name => "stripe-key", :content => STRIPE_PUBLIC_KEY %>
<%= csrf_meta_tags %>
</head>
<body>
...
<%= link_to root_path, class: 'navbar-brand' do %>
<i class="fa fa-users"></i>
Ayris
<% end %>
...
<% if user_signed_in? %>
...
<% else %>
...
<% if user_signed_in? %>
...
<% end %>
<li><%= link_to "About", about_path %></li>
<li><%= link_to "Contact Us", new_contact_path %></li>
</ul>
</div><!-- /.navbar-collapse -->
</div>
</nav>
<div class="container">
<% flash.each do |key, value| %>
<%= content_tag :div, value, class: "alert alert-#{key}" %>
<% end %>
<%= yield %>
</div>
</body>
</html>
home.html.erb
<% if user_signed_in? %>
...
<% if current_user.profile %>
...
<% else %>
...
<% end %>
...
<% else %>
<div class="col-md-6">
<div class="well">
<h2 class="text-center">Trial Membership</h2>
<h4>Sign up for free and get trial access for a period of 10 days.</h4>
<br/>
<%= link_to "Sign up for Trial", new_user_registration_path(plan: #trial_plan), class: 'btn btn-primary btn-lg btn-block' %>
</div>
</div>
<div class="col-md-6">
<div class="well">
<h2 class="text-center">Pro Membership</h2>
<h4>Sign up for the pro account for €75/month and get access to all functions.</h4>
<%= link_to "Sign up for Pro", new_user_registration_path(plan: #pro_plan), class: 'btn btn-success btn-lg btn-block' %>
</div>
</div>
<% end %>
</div>
I fixed the problem, the thing you've mentioned about the database was right. The problem was that, for some reason, the db migration to Heroku was unsuccessful, without giving me any notice about it. After running:
Heroku run rails c
Plan.create(name: 'trial', price: 0)
Plan.create(name: 'pro', price: 75)
After running these commands the both plans were injected to the database of my Heroku app. My code seems to work perfectly fine now, altough I've changed the following piece of code according to your comment about hardcoding ID's
pages_controller.rb
class PagesController < ApplicationController
def home
if Plan.find_by name: 'trial'
#trial_plan = 1
end
if Plan.find_by name: 'pro'
#pro_plan = 2
end
end
end
Thanks for the heads up.
I've created a new Rails project, added gem 'simple_form', '~> 3.2', '>= 3.2.1' to my gemfile and configured my project to use Bower, than added Bootstrap via Bower.
Even though I used rails generate simple_form:install --bootstrap, the form elements don't get the Bootstrap css classes.
I've checked the HTML after the page is rendered and the Bootstrap css/js are there. Do I need to use Bootstrap gem instead of Bower package??
Here is the .bowerrc file:
{
"directory": "vendor/assets/components"
}
bower.json
{
"name": "TesteKlipbox",
"authors": [
"Juliano Nunes"
],
"description": "",
"main": "",
"license": "MIT",
"homepage": "",
"private": true,
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"vendor/assets/components",
"test",
"tests"
],
"dependencies": {
"bootstrap": "^3.3.6"
}
}
Gemfile
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.6'
# Use postgresql as the database for Active Record
gem 'pg', '~> 0.15'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'simple_form', '~> 3.2', '>= 3.2.1'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Unicorn as the app server
# gem 'unicorn'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> in views
gem 'web-console', '~> 2.0'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
And the form code:
<%= simple_form_for(#noticia, html: { class: 'form-horizontal' }) do |f| %>
<% if #noticia.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(#noticia.errors.count, "error") %> erros impediram que esta notícia fosse salva:</h2>
<ul>
<% #noticia.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :titulo %><br>
<%= f.text_field :titulo %>
</div>
<div class="field">
<%= f.label :texto %><br>
<%= f.text_area :texto %>
</div>
<div class="field">
<%= f.label :data %><br>
<%= f.datetime_select :data %>
</div>
<div class="field">
<%= f.label :tags %><br>
<%= f.text_field :tags %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
UPDATE
Another user has already answered the question. My mistake was that I didn't replace f.text_field by f.input. It has nothing to do with the suggested bootstrap theme question.
To start using Simple Form you just have to use the helper it
provides:
<%= simple_form_for #user do |f| %>
<%= f.input :username %>
<%= f.input :password %>
<%= f.button :submit %>
<% end %>
The helper being f.input instead of the Rails helper(s) such as f.text_field, f.text_area etc. See Simple_Form Usage and Rails Form Helpers.
The below image shows the first input using f.text_field and the second using f.input.
Make sure that bootstrap is stored in the correct location:
bootstrap.min.css as well as bootstrap.css,
bootstrap.min.js and bootstrap.js,
all need to be located in app/assets/stylesheets and app/assets/javascripts respectively.
Add *= require bootstrap to app/assets/stylesheets/application.css and,
add //= require bootstrap to app/assets/javascripts/application.js
Can anybody please solve me one issue regarding bootstrap using in ROR.
Issue:
I have integrated gem "'bootstrap-sass', '3.2.0.2'" in my gem file.After adding some bootstrap navigation code in application.html.erb,it is showing one nice bootstrap navigation bar.If i am doing some changes in style sheet and refreshes the page it is splitting means the nav menu lists is not coming in inline and next time onward it is repeating.Actually i want the original nav bootstrap bar even if I did any changes in style sheet.
Please check my below code snippets and make it correct.
My codes are as follows:
Gemfile
source 'https://rubygems.org'
gem 'rails', '3.2.19'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'debugger'
gem 'bootstrap-sass', '3.2.0.2'
homes.css.scss
#import "bootstrap-sprockets";
#import "bootstrap";
body {
padding-top: 60px;
}
application.html.erb
<!DOCTYPE html>
<html>
<head>
<title>LibraryManagement</title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<header class="navbar navbar-fixed-top navbar-default">
<div class="container">
<%= link_to "Library Management System", '#', id: "logo" %>
<nav>
<ul class="nav navbar-nav navbar-right">
<li><%= link_to "Home", '#' %></li>
<li><%= link_to "Books", '#' %></li>
<li><%= link_to "Member Entry", '#' %></li>
<li><%= link_to "Admin Login", '#' %></li>
</ul>
</nav>
</div>
</header>
<div class="container">
<%= yield %>
</div>
</body>
</html>
homes/index.html.erb
<h1>Index page</h1>
Please help me.Thanks in advance.