syntax error, unexpected keyword_ensure, expecting end-of-input

DO:


实现登陆功能时,创建session#new view时,
<h1>Sign in</h1>
<div class = “container”>
<%= form_for (:session, url:sessions_path) do |f| %>
<%= f.lable :email %>
<%= f.text_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.submit “Sign in” %>
<% end %>
<p> New user? <%= link_to “Sign up now!”, signup_path %></p>
</div>

Problem:

/Users/alan_cuiwei/workspace/pgg_app/app/views/sessions/new.html.erb:5: syntax error, unexpected ‘,’, expecting ‘)’ …er.append= form_for (:session, url:sessions_path) do |f| @o… … ^ /Users/alan_cuiwei/workspace/pgg_app/app/views/sessions/new.html.erb:20: syntax error, unexpected keyword_ensure, expecting end-of-input

<div class = "container">
<%= form_for (:session, url:sessions_path) do |f| %>
<%= f.lable :email %>
<%= f.text_field :email %>
Solution:

<h1>Sign in</h1>
<div class = “container”>
<%= form_tag sessions_path do %>
<%= label_tag :email %><br />
<%= text_field :email, params[:email] %><br />
<%= label_tag :password %><br />
<%= password_field_tag :password %>
<%= submit_tag %>
<% end %>
<p> New user? <%= link_to “Sign up now!”, signup_path %></p>
</div>

如何在生产环境设置使用 SSL

config/environments/production.rb

  config.force_ssl = true
最后一步,我们要在远程服务器上架设 SSL。在生产环境中架设对 SSL 的支持很麻烦,也很容易出错,而且还要为域名购买 SSL 签名证书。幸好,使用 Heroku 提供的二级域名可以直接使用 Heroku 的 SSL 签名证书。

通常显示为 http:// 的地方现在显示的是 https://,就是这个额外的“s”,证明我们正在使用SSL。


如何在注册表单中添加错误提示信息


在注册表单前显示的错误提示信息

<%= form_for(@user) do |f| %>
     <%= render 'shared/error_messages' %>
。。。
<% end %>

在上面的代码中渲染的局部视图名为 shared/error_messages,这里用到了 Rails 的一个约定:如果局部视图要在多个控制器中使用,则把它存放在专门的 shared 目录下。
我们除了要新建_error_messages.html.erb 文件之外,还要新建 app/views/shared 文件夹。

app/views/shared/_error_messages.html.erb

<% if @user.errors.any? %>
  <div id=”error_explanation”>
    <div class=”alert alert-error”>
      The form contains <%= pluralize(@user.errors.count, “error”) %>.
    </div>
    <ul>
    <% @user.errors.full_messages.each do |msg| %>
      <li>* <%= msg %></li>
    <% end %>
    </ul>
  </div>
<% end %>




ActiveModel::ForbiddenAttributesError

Do:
create a new user

        

Problem:

ActiveModel::ForbiddenAttributesError in UsersController#create

ActiveModel::ForbiddenAttributesError

def create
@user = User.new(params[:user])
if @user.save
else
render 'new'

Solution:

健壮参数 strong parameter
def create
 @user = User.new(user_params)
    if @user.save
    else
      render 'new'
    end
  end
  private
    def user_params
      params.require(:user).permit(:name, :email, :password,
                                   :password_confirmation)
    end










resources :users 意味着什么?

HTTP 请求 URL 动作 具名路由 作用
GET /users index users_path 显示所有用户的页面
GET /users/1 show user_path(user) 显示某个用户的页面
GET /users/new new new_user_path 创建(注册)新用户的页面
POST /users create users_path 创建新用户
GET /users/1/edit edit edit_user_path(user) 编辑 id 为 1 的用户页面
PATCH /users/1 update user_path(user) 更新用户信息
DELETE /users/1 destroy user_path(user) 删除用户
以上路径都支持。