Trace: https://i.gyazo.com/6487f4eee162e8c2207d7fdb5fc4ef3b.png
I can't get what's happening, I did the same process with the contact page and everything worked fine. Any ideas?
profile/new.html.erb
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h1 class="text-center">Create Your Profile</h1>
<p class="text-center">Be a part of the DevMatch community and fill out your profile!</p>
<div class="well">
<%= render 'form' %>
</div>
</div>
</div>
profile/_form.html.erb
<%= form_for #profile, url: user_profile_path do |f| %>
<div class="form-group">
<%= f.label :first_name %>
<%= f.text_field :first_name, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :last_name %>
<%= f.text_field :last_name, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :job_title %>
<%= f.select :job_title, ['Developer', 'Entrepreneur', 'Investor'], {}, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :phone_number %>
<%= f.text_field :phone_number, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :contact_email %>
<%= f.text_field :contact_email, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :description %>
<%= f.text_area :description, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.submit "Update Profile", class: 'btn btn-primary' %>
</div>
<% end %>
schema
create_table "profiles", force: :cascade do |t|
t.integer "user_id"
t.string "first_name"
t.string "last_name"
t.string "job_title"
t.string "phone_number"
t.string "contact_email"
t.text "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Profiles controller
class ProfilesController < ApplicationController
# GET to /users/:user_id/profile/new
def new
# Render blank profile details form
#profile = Profile.new
end
end
I get the rror in the profile creator page. It says the firstname is undefined but I tried deleting it and then it says that the laast name is undefined and so on
If I delete the "<%= render 'form' %>" form the other html, the page loads perfectly, but I need a form and I am trying to learn Ruby. Sorry
undefined method `first_name' for Profile id: nil
It says the firstname is undefined but I tried deleting it and then it
says that the last name is undefined and so on
You didn't have columns in the profiles table. You should run rake db:migrate to migrate the columns which should resolve your problem.
Additionally always make sure your migrations are run properly without any errors You check the status of the pending migrations with rake db:migrate:status
Related
I have what should be a fairly simple setup for paperclip on my rails app.
My products_controller.rb is this:
class ProductsController < ApplicationController
...
def new
#product = Product.new
end
def create
#product = Product.new(product_params)
#product.save
flash[:notice] = "Your product has been created!"
redirect_to products_path
end
def edit
#product = Product.find(params[:id])
end
def update
#product = Product.find(params[:id])
if #product.update_attributes(product_params)
redirect_to products_path
flash[:notice] = "That product has been updated."
else
render :action => :edit
flash[:alert] = "Something went terribly wrong there..."
end
end
...
private
def product_params
params.require(:product).permit(:name, :price, :active, :short_description, :weight, :box_length, :box_width, :box_depth, :product_image)
end
end
My products#edit form (products#new doesn't work either, but it's the same form):
<%= form_for #product, html: { multipart: true } do |f| %>
<div class="form-inputs row">
<div class="form-group col-xs-9">
<%= f.label "Product Name" %>
<%= f.text_field :name, class: "form-control" %>
</div> <!-- form group -->
<div class="form-group col-xs-3">
<%= f.label :price %>
<%= f.text_field :price, class: "form-control", data: {autonumeric: true} %>
</div> <!-- form group -->
<div class="form-group col-xs-12">
<%= f.label "Product Description" %>
<%= f.text_area :short_description, class: "form-control" %>
</div> <!-- form group -->
<div class="form-group col-xs-12">
<%= f.file_field :image, as: :file %>
</div> <!-- form group -->
<div class="form-group text-center col-xs-12">
<p><%= f.check_box :active %> This is an active product.</p>
</div> <!-- form group -->
<div class="row">
<hr class="col-xs-6 col-xs-push-3" />
</div>
<div class="col-xs-12">
<h2 class="text-center">Shipping Information</h2>
</div>
<div class="form-group col-xs-6">
<%= f.label "Product Length (in Inches)" %>
<%= f.text_field :box_length, class: "form-control" %>
</div> <!-- form group -->
<div class="form-group col-xs-6">
<%= f.label "Product Width (in Inches)" %>
<%= f.text_field :box_width, class: "form-control" %>
</div> <!-- form group -->
<div class="form-group col-xs-6">
<%= f.label "Product Depth (in Inches)" %>
<%= f.text_field :box_depth, class: "form-control" %>
</div> <!-- form group -->
<div class="form-group col-xs-6">
<%= f.label "Product Weight (in Pounds)" %>
<%= f.text_field :weight, class: "form-control" %>
</div> <!-- form group -->
</div>
<div class="form-actions text-center">
<%= f.button :submit, class: "btn btn-manly" %>
</div>
<% end %>
And my relevant routes:
resources :products
And finally the product.rb model:
class Product < ActiveRecord::Base
has_many :order_items
has_attached_file :product_image
validates_attachment_content_type :product_image, content_type: /\Aimage\/.*\z/
validates_attachment_file_name :product_image, matches: [/png\z/, /jpe?g\z/]
default_scope { where(active: true) }
end
And the schema.rb for the products table:
create_table "products", force: :cascade do |t|
t.string "name"
t.decimal "price", precision: 12, scale: 3
t.boolean "active"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "short_description"
t.decimal "weight"
t.decimal "box_length"
t.decimal "box_width"
t.string "box_depth"
t.string "product_image_file_name"
t.string "product_image_content_type"
t.integer "product_image_file_size"
t.datetime "product_image_updated_at"
end
I am getting no errors when I submit. I have also tried both the simple_form_for and the form_for variations given in the Paperclip documentation. I have double checked and ImageMagick is installed. Can anyone see why it isn't saving? When I check the console after trying to upload an image it just says nil for all four paperclip fields.
You are using :image for file_field but your paperclip field is using product_image, change as follow to upload file
<div class="form-group col-xs-12">
<%= f.file_field :product_image, as: :file %>
</div> <!-- form group -->
So I'm taking this course on udemy and working through the app I get stuck here! I've rewatched the vids and corrected all I saw. Can someone help me get past this error?
NoMethodError in Contacts#new
Showing /home/ubuntu/workspace/app/views/contacts/new.html.erb where line #17 raised:
undefined method `comments' for #<Contact:0x007f490a778008>
Extracted source (around line #17):
<%= form_for #contact do |f| %>
<div class="form-group">
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :comments %>
<%= f.text_area :comments, class: 'form-control' %>
</div>
<%= f.submit 'Submit', class: 'btn btn-default' %>
<% end %>
The rails model Contact does not seem to have the attribute comments, as per your comment this is your current model:
schema.rb:
ActiveRecord::Schema.define(version: 20150905160857) do
create_table "contacts", force: :cascade do |t|
t.string "name"
t.string "email"
t.string "text"
t.datetime "created_at"
t.datetime "updated_at"
end
end
you would have two options:
Option 1:
instead of using comments, use text in your view:
<%= f.label :text %>
<%= f.text_area :text, class: 'form-control' %>
Option 2:
You could create a new migration to adjust your model renaming the column text or adding the column comments to your model.
Execute this from the rails app folder:
rails g migration adjustingContact
navigate to the folder /your-app-folder/db/migrate and edit the file <datestring>_adjustingContact.rb adding or renaming your comments column
execute a migration:
rake db:migrate
I hope this helps.
I created a Preference model to manage email settings. Right now, the nested form is not showing up on the actual page. I tried a series of different tactics, but can't figure it out.
I made sure I had preferences locally set up, changed the fields_for to (#user.preference) which didn't work, etc.
I'm using Rails 4.2.2, Ruby version 2.2.1.
schema
create_table "preferences", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id", null: false
t.boolean "new_match", default: true, null: false
t.boolean "accepted_match", default: true, null: false
t.boolean "match_reminder", default: true, null: false
t.boolean "new_message", default: true, null: false
end
user model
has_one :preference, dependent: :destroy
accepts_nested_attributes_for :preference
preference model
class Preference < ActiveRecord::Base
belongs_to :user
end
actual form that has contains the partials to the nested form:
<%= form_for(#user, id: "editing-info") do |f| %>
<ul class="tabs">
<li class="tab-link current" data-tab="tab-account">
<%= t("edit_user.tabs.account") %>
</li>
<li class="tab-link" data-tab="tab-interests">
<%= t("edit_user.tabs.interests") %>
</li>
<li class="tab-link" data-tab="tab-settings">
<%= t("edit_user.tabs.settings") %>
</li>
</ul>
<div class="tab-content current" id="tab-account">
<%= render "users/tabs/account", f: f %>
</div>
<div class="tab-content" id="tab-interests">
<%= render "users/tabs/interests", f: f %>
</div>
<div class="tab-content" id="tab-settings">
<%= render "users/tabs/settings", f: f %>
</div>
<div id="button-container">
<%= link_to 'Cancel',
user_path(current_user),
data: { disable_with: "Loading..." },
class: "cancel-desktop" %>
<%= f.submit "Save",
data: { disable_with: "Loading..." },
class: "save main-save-button-edit" %>
</div>
<% end %>
partial that includes nested form
<div id="settings">
<h4 class="notifications-label">Notifications</h4>
<div class="notifications setting-category info-holder">
<div class="mobile setting-holder">
<%= f.label :mobile, "Mobile", class: "setting-label" %>
<%= f.text_area :mobile, placeholder: "Add mobile number", class: "setting-input" %>
</div>
<div class="email-holder setting-holder main-email-edit">
<%= f.label :email, "Email", class: "setting-label" %>
<%= f.text_area :email, placeholder: "Add email address", class: "setting-input" %>
</div>
<p class="setting-descrip">This email is where Glassbreakers notifications will be sent. Please continue to use your email associated with your LinkedIn account to sign in.</p>
</div>
<h4 class="email-label">Emails</h4>
<%= f.fields_for :preference do |user_preference| %>
<div class="email-notifications-holder">
<div class="email-holder">
<%= user_preference.label :new_match, "Getting a new match each week" %>
<%= user_preference.check_box :new_match, class: "checkbox new_match_email" %>
</div>
<div class="email-holder">
<%= user_preference.label :match_reminder, "New matches Thursday reminder", class: "match_reminder_email" %>
<%= user_preference.check_box :match_reminder, class: "checkbox thursday_reminder_email" %>
</div>
<div class="email-holder">
<%= user_preference.label :accepted_match, "A Glassbreakers accepted a match", class: "accepted_match_email" %>
<%= user_preference.check_box :accepted_match, class: "checkbox accept_match_email" %>
</div>
<div class="email-holder">
<%= user_preference.label :new_message, "Received a new message" %>
<%= user_preference.check_box :new_message, class: "checkbox new_message_email" %>
</div>
</div>
<% end %>
<h4 class="connect-label">Connections</h4>
<div class="connections info-holder">
<p class="inform">You'll receive new matches every Tuesday. Make sure to respond to your matches before then.</p>
<div class="pausing">
<label><%= t("edit_user.settings.pausing_header") %></label>
<%= react_component(
"MatchingPausedSetting",
{
matchingPaused: current_user.matching_paused?,
pauseMatchingURL: user_matching_pauses_path(current_user)
}
) %>
</div>
<p class="setting-descrip pause-descrip">Pausing connections means you will not receive new potential connections each week. You will be able to send and receive new messages.</p>
</div>
<h4 class="contact-label">Contact</h4>
<div id="contact-info" class="info-holder">
<p class="inform">Have a question? We love hearing from you. Contact Courtney, our communication manager, at info#glassbreakers.co.</p>
</div>
</div>
user controller pertaining to the user_params
def user_params
filtered_params = params.require(:user).permit(
:email,
:mobile,
:bio_because,
:bio_meet,
:description,
:github_link,
:linkedin_link,
:title,
:twitter_link,
preference_attributes: [
:id,
:new_match,
:accepted_match,
:match_reminder,
:new_message,
],
user_onboard_skills_attributes: [
:skill_id,
:industry_id,
:years_experience,
:id,
:_destroy,
],
interest_ids: [],
)
filtered_params[:user_onboard_skills_attributes] =
filter_user_onboard_skills_attributes(
filtered_params[:user_onboard_skills_attributes]
)
filtered_params
end
If your nested form is actually within the user form itself, adjusting your fields_for declaration like so should do the trick:
<%= f.fields_for #user.preference do |preference_fields| %>
Also note that I renamed the block variable to preference_fields from f, as it looks like you are already using f for your parent form.
The documentation has great explanation of this method, which should answer any additional questions:
fields_for documentation
Edit for posterity:
The fields weren't correctly displaying because your User model did not have an associated Preference model, this can be fixed by manually associating a preference model to the User, or by utilizing a strategy similar to the one found in this question: Rails: Create association if none is found to avoid nil errors. Pre-cautions are taken at the model level to ensure the association is created whenever a new User is created.
You cannot get both fields for user and preferences using 'f'.
you need to get fields_for preferences using
<%= f.fields_for :preference do |user_preference| %>
and for preferences field you will use user_preference
I am working on an app where people can go to edit their user and upon submission it redirects them to their show profile view.
This all seems to work according to plan but for some reason some when I go back to my edit view I see that some of my form fields get automatically pre-populated while others don't.
Why is this happening?
Specifically the all text fields are being remembered and pre-populated but my image file field and time weekly fields are not. They are definitely still in the database and are displayed in my show view but not pre-populated on the edit view?
Do certain types of fields not get pre-populated or what is this behavior? I would ideally like to have all of the fields pre-populated(image, dates, text, etc)
Here is my code:
Edit view:
<div class="editprofilebox">
<h1>Take a moment to fill out your profile:</h1>
<div class="container-fluid">
<div class="edit-profile-form">
<%= form_for #user, :html => { :role => 'form', :class => 'form-horizontal', :multipart => true } do |f| %>
<div class="form-inputs">
<div class="row">
<div class= "col-sm-4">
<div class: "form-group">
<%= f.text_field :first_name, class: "form-control", placeholder:"First Name" %>
</div>
<div class: "form-group">
<%= f.text_field :last_name, class: "form-control", placeholder:"Last Name" %>
</div>
<div class: "form-group">
<%= f.label :profile_image, class: "control-label" %>
<%= f.file_field :image, class: "profile-picture-upload" %>
</div>
</div>
<div class= "col-sm-4">
<div class: "form-group">
<%= f.label :twitter %>
<%= f.text_field :twitter, class: "form-control", placeholder:"Type your update title here" %>
</div>
<div class: "form-group">
<%= f.text_field :occupation, class: "form-control", placeholder:"Occupation" %>
</div>
<div class: "form-group">
<%= f.text_field :gender, class: "form-control", placeholder:"Gender" %>
</div>
<div class: "form-group">
<%= f.text_field :work_history, class: "form-control", placeholder:"Work History" %>
</div>
<div class: "form-group">
<%= f.number_field :years_of_experience, class: "form-control", placeholder:"years_of_experience" %>
</div>
</div>
<h3> time available </h3>
<div class="col-sm-2">
<%= f.label :Monday %>
<%= f.check_box :monday, class: "time-checkbox", placeholder:"Type your update title here" %>
<%= f.time_field :mondaytime1, class: "form-control time-box"%>
<%= f.time_field :mondaytime2, class: "form-control time-box" %>
<%= f.label :Tuesday %>
<%= f.check_box :tuesday, class: "time-checkbox", placeholder:"Type your update title here" %>
<%= f.time_field :tuesdaytime1, class: "form-control time-box" %>
<%= f.time_field :tuesdaytime2, class: "form-control time-box" %>
<%= f.label :Wednesday %>
<%= f.check_box :wednesday, class: "time-checkbox" %>
<%= f.time_field :wednesdaytime1, class: "form-control time-box" %>
<%= f.time_field :wednesdaytime2, class: "form-control time-box" %>
<%= f.label :Thursday %>
<%= f.check_box :thursday, class: "time-checkbox" %>
<%= f.time_field :thursdaytime1, class: "form-control time-box" %>
<%= f.time_field :thursdaytime2, class: "form-control time-box" %>
</div>
<div class:"col-sm-2">
<%= f.label :Friday %>
<%= f.check_box :friday, class: "time-checkbox" %>
<%= f.time_field :fridaytime1, class: "form-control time-box" %>
<%= f.time_field :fridaytime2, class: "form-control time-box" %>
<%= f.label :Saturday %>
<%= f.check_box :saturday, class: "time-checkbox" %>
<%= f.time_field :saturdaytime1, class: "form-control time-box" %>
<%= f.time_field :saturdaytime2, class: "form-control time-box" %>
<%= f.label :Sunday %>
<%= f.check_box :sunday, class: "time-checkbox" %>
<%= f.time_field :sundaytime1, class: "form-control time-box" %>
<%= f.time_field :sundaytime2, class: "form-control time-box" %>
</div>
</div>
</div>
<div class="form-actions">
<%= f.button :submit, class: "btn btn-default btn-lg" %>
</div>
<% end %>
</div>
</div>
</div>
show view:
<div class="profilebox">
<div class="profile-title-box" >
<%= #user.first_name %> <%= #user.last_name %> profile
</div>
<hr>
<div class="profile-container">
<div class="row ">
<div class="profile-image-box col-sm-4" >
<%= image_tag #user.image.thumb('150x185#').url if #user.image_stored? %>
</div>
<div class="profile-info-box col-sm-8">
<%= #user.email %>
</br>
<%= #user.first_name %>
</br>
<%= #user.last_name %>
</br>
<%= #user.occupation %>
</br>
<%= #user.gender %>
</br>
<%= #user.work_history %>
</br>
<%= #user.years_of_experience %>
</br>
</div>
</div>
</div>
<hr>
<div class="profile-extra-box">
<h3>Complete your profile here:</h3>
<%= link_to 'Edit', edit_user_path(#user) %>
</div>
</div>
users controller:
class UsersController < ApplicationController
def new
end
def show
#user = User.find(params[:id])
end
def index
end
def edit
#user = User.find(params[:id])
end
def update
#user = User.find_by_id(params[:id])
if #user.update_attributes(user_params)
flash[:success] = "User updated successfully!"
redirect_to user_path
else
flash[:danger] = "User could not be updated!"
end
end
def destroy
end
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :image, :twitter, :monday, :mondaytime1, :mondaytime2, :tuesday, :tuesdaytime1, :tuesdaytime2, :wednesday, :wednesdaytime1, :wednesdaytime2, :thursday, :thursdaytime1, :thursdaytime2, :friday, :fridaytime1, :fridaytime2, :saturday, :saturdaytime1, :saturdaytime2, :sunday, :sundaytime1, :sundaytime2, :occupation, :gender, :years_of_experience, :work_history)
end
end
Scheema:
ActiveRecord::Schema.define(version: 20140906225655) do
create_table "users", force: true do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
t.string "first_name"
t.string "last_name"
t.string "image_uid"
t.string "image_name"
t.text "twitter"
t.boolean "monday"
t.text "mondaytime1"
t.text "mondaytime2"
t.boolean "tuesday"
t.text "tuesdaytime1"
t.text "tuesdaytime2"
t.boolean "wednesday"
t.text "wednesdaytime1"
t.text "wednesdaytime2"
t.boolean "thursday"
t.text "thursdaytime1"
t.text "thursdaytime2"
t.boolean "friday"
t.text "fridaytime1"
t.text "fridaytime2"
t.boolean "saturday"
t.text "saturdaytime1"
t.text "saturdaytime2"
t.boolean "sunday"
t.text "sundaytime1"
t.text "sundaytime2"
t.string "occupation"
t.string "gender"
t.string "work_history"
t.decimal "years_of_experience"
end
add_index "users", ["email"], name: "index_users_on_email", unique: true
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end
"Pre-population" has two connotations, both of which you need to consider:
Browser-based data
Server-based data
Browser
The difference here is that browser based data is basically the "remember me" stuff you type into forms on e-commerce sites and the like.
The reason I mention this is because when you have a user form, modern browsers (exclusing IE) will generally populate it with the relevant data you have used before. This can be seen with this introduction to Autofill on Chrome's site:
In essence, it means that if you load standard "input names" on your pages, Chrome will endeavour to populate them with data you've either saved, or inputted into other websites.
Firstly, you need to make sure you are not having your details inputted by the browser. If this the is the case, it will mean you've got to get the server-side functionality working regardless.
Either way, you should look at using the server-based data as described below:
Server
Secondly, you'll have sever-based data. This is real Rails data, and what you need in your page:
#app/controllers/users_controller.rb
class UsersController < ApplicationController
def edit
#user = User.find params[:id]
end
end
#app/views/users/edit.html.erb
<%= form_for #user do |f| %>
<%= f.text_field :first_name %>
<%= f.text_field :last_name %>
<%= image_tag #user.image.url if #user.image.present? %>
<%= f.file_field :image %>
<%= f.submit %>
<% end %>
As per the form_for documentation, if you have the correct ActiveRecord object populated, and have the data in your database, calling the attribute-based input helpers should populate for you.
There are some caveats to this, however:
--
Image
Using file_field will not pre-populate your image.
The file upload element is distinctly different to the image element - simply that the upload element cannot show you an image. This means you have to explicitly show the image in your edit form, if indeed you want to show it:
# Edit View
<%= image_tag #user.image.thumb('150x185#').url if #user.image_stored? %>
<%= f.file_field :image %>
We've used this method here (just sign up for free and try to upload a profile image):
Although we used JQuery heavily here, we made it so that the image form shows the image, which then gives you the ability to upload a new one.
--
Time
Frankly, I'm not sure about your time field.
Like the explanation above, you'll want to ensure you're using the attributes from your database to populate your time fields. I see you're using a lot of different checkboxes, which although might help create a better system, will likely not populate the data you want
Hi I'm using text forms while using pins. My code below:
_form.html.erb
<div class="form-group">
<%= f.label :description %>
<%= f.text_field :description, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :description %>
<%= f.text_field :description, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :image %>
<%= f.file_field :image, class: "form-control" %>
</div>
Index.html.erb
<div class="center">
<h1><strong><%= pin.description %></strong></h1>
<h3><%= pin.description %></h3></div>
<%= link_to image_tag(pin.image.url(:medium)), pin %>
show.html.erb
<div class="panel-heading center">
<%= image_tag #pin.image.url(:medium) %>
</div>
<div class="panel-body">
<h1><strong><%= #pin.description %></strong></h1>
<h3><%= #pin.description %></h3>
I get the same text output when I create a pin and descriptions using that code. I've tried changing the :description method into something else but then I got an error saying I can't load the page. How can I solve this problem? Thank You
ActiveRecord::Schema.define(version: 20131017222026) do
create_table "pins", force: true do |t|
t.string "description"
t.string "definition"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id"
t.string "image_file_name"
t.string "image_content_type"
t.integer "image_file_size"
t.datetime "image_updated_at"
end
I'm guessing this is your problem (your question really lacks context):
<div class="form-group">
<%= f.label :description %>
<%= f.text_field :description, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :description %>
<%= f.text_field :description, class: "form-control" %>
</div>
If you try and output fields on a form, you'll have to output the fields relating to your model's schema. For example, if you just type f.text_field :my_name, you'll get a no method error
As you've shown your schema, you could put a text field for any of the attributes your record has, such as:
<div class="form-group">
<%= f.label :definition %>
<%= f.text_field :definition, class: "form-control" %>
</div>
No Method Errors
A quick note on no method errors for you
Since Ruby on Rails is Object Orientated, everything you do with it has to involve an object. The best example of this is ActiveRecord objects - they are a variable populated with table data
The reason why you see no method errors is simply because you're trying to perform an action or method on an object which does not support it
So if you have #companies, and try to perform #companies.is_my_name_richard? - it will likely come back with a no method error. The way around this is to ensure you only call the model's attributes (if you're outputting the variable), or only use functions which have been defined in the controller or model