Commands
- time_ago_in_words() - As the name said put a date in words
- redirect_to - Redirect to an URL
- params[:attribute] - Get in the controller the parameters from the session
Authentication
- In the controller root_app\app\controllers\*.rb
- At the beginning of the file add : before_action :authenticate, except: [:index, :show]
- Where authenticate is a method, that need to be defined
- Then add at the final of the file the method definition
authenticate_or_request_with_http_basic do |name, password|
name == "admin" && password == "123"
end
end
Ajax (Video 8 6:56 min)
- In the View root_app\views\post\show.html.erb
- In the form tag, add a parameter to the form_for method: remote: true
- In the Controller root_app\controller\comment_controllers
- Add the line: format_js
- If after that you do not specified any file, the default file to consider is method_name.js.erb
- Create a JS cretate.js.erb
- Create a file in root_app\views\comments and named create.js.erb
- Add the code
var new_comment = $("<%= escape_javascript( render(:partial => @comment))%>").hide();
$('#comments').prepend(new_comment);
$('#comments_<%= @comment.id %>').fadeIn('slow');
$('#new_comment')[0].reset();
escape_javascript() - Ruby validate that the code is valid javascript
escape_javascript() - Ruby validate that the code is valid javascript
- Return to root_app\views\comment\ and Create partial template for the part you want to create dynamically _comment.html.erb
- Add the following lines (this code come from the View) :
<p>
<strong> Posted <%= time_ago_in_words(comment.created_at) %> ago </strong>
<br/>
<%= h(comment.body) %>
</p>
<% end %>
In the View root_app\views\post\show.html.erb
<%= render :partial => @post.comments.reverse %>
Replace the code for show comments for:
Comentarios
Publicar un comentario