Rails Form Examples: Difference between revisions
Jump to navigation
Jump to search
Line 4: | Line 4: | ||
<source lang="rails"> | <source lang="rails"> | ||
<table border="0" class="s_data"> | <table border="0" class="s_data"> | ||
<% form_for :study, @study, :id => @study.id do |f| %> | <%= form_for :study, @study, :id => @study.id do |f| %> | ||
<tr><td class="v_header">Study Name:</td> | <tr><td class="v_header">Study Name:</td> | ||
<td><%= f.text_field :name, {:size => 15} %></td> | <td><%= f.text_field :name, {:size => 15} %></td> |
Latest revision as of 23:36, 7 January 2016
Form for editing a single database row
app/views/study.html.erb:
<table border="0" class="s_data">
<%= form_for :study, @study, :id => @study.id do |f| %>
<tr><td class="v_header">Study Name:</td>
<td><%= f.text_field :name, {:size => 15} %></td>
<td class="formError"><%= @name_error %></td>
</tr>
<tr><td class="v_header">Default Account:</td>
<td><%= f.text_field :account, {:size => 15} %></td>
<td class="formError"><%= @account_error %></td>
</tr>
<tr><td> </td><td><%= submit_tag "Save" %></td></tr>
<% end %>
</table>
Controller
app/controllers/study_controller.rb:
def edit
@user = User.find(session['user']['id'])
@title = 'Edit Study'
@study = Study.find(params['id'])
if not @study or not can_edit(@user, @study.group)
redirect_to :action => 'list'
return
end
@name_error = ''
@account_error = ''
if params['study']
name = params['study']['name'].strip
if (not name) or name.size < 2 or name.size > 32
@name_error = "Study name must contain between 2 and 32 characters"
end
account = params['study']['account'].strip.upcase
if account.size > 0
# verify account format
if account =~ /^\w-\w{7}$/ or account =~ /^\w-\w{7}-\w{5}$/
params['study']['account'] = account
else
@account_error = "Account number must take the form X-YYYYYYY or X-YYYYYYY-ZZZZZ"
end
else
params['study']['account'] = nil
end
if @name_error.size + @account_error.size == 0
if @study.update_attributes(params[:study])
redirect_to :action => 'list'
end
end
end
end
Form for generic POST
app/views/user/login.html.erb:
<% if flash['notice'] %>
<h1 style="color: red;"><%= flash['notice'] %></h1>
<% end %>
<table border="0" class="s_data">
<% form_tag :action => 'verify' do %>
<tr><td class="v_header">Email</td>
<td><%= text_field 'user', 'email' %></td></tr>
<tr><td class="v_header">Password</td>
<td><%= password_field 'user', 'pass' %></td></tr>
<tr><td> </td><td><%= submit_tag "Log in" %></td></tr>
<% end %>
</table>
Controller
app/controllers/user_controller.rb:
def verify
hash_pass = password_hash(params[:user][:pass])
user = User.find(:first, :conditions =>
["email = ? and pass = ? and is_active = 'true'", params[:user][:email], hash_pass])
if user
session['user'] = user
user.record_login
redirect_to :controller => "calendar", :action => "index"
else
flash['notice'] = "Bad username/password!"
redirect_to :controller => "user", :action => "login"
end
end