0

一括割り当て保護を許可するには、「attr_accessible」を使用する必要があることを知っています。これは、実際に私のユーザーモデルで行っていることです。どうしてまだ文句を言うの?

Can't mass-assign protected attributes: email, password

ユーザーコントローラー:

class UsersController < ApplicationController

  def index
    @users = User.new
  end

  def show
    @user = User.find(2)
  end

  def login
    @user = Project.new(params[:user])
    ...
  end

end

ユーザーモデル:

class User < ActiveRecord::Base
  has_and_belongs_to_many :projects
  belongs_to :project
  belongs_to :ticket

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password
end

ビュー、_navigation.html.erb:

<%= form_for("user", :url => login_users_path, :html => { :method => :post }) do |f| %>
    <%= f.label :email%>
    <%= f.text_field(:email, :size => 30, :class => 'login_field', :placeholder => 'Användarnamn')%>
    <%= f.label :password%>
    <%= f.text_field(:password, :size => 30, :class => 'login_field', :placeholder => 'Lösenord')%>

    <%= f.submit "Logga in", :class => 'login_submit btn btn-primary' %>
<% end %>

config / routers.rbから:

resources :users do
  post :login, on: :collection, as: :login
end

上記のコレクションを使用しているので、(私が理解している限り)それは私が使用している正しいコントロール/モデル(ユーザー)である必要がありますか?

4

2 に答える 2

3

Userすべきではないと思いますProject

   def login
     @user = User.new(params[:user])
     ...
   end
于 2013-02-06T15:18:04.500 に答える
2

また、インデックスアクションを次のように変更する必要があります。

def index
  @users = Users.all
end

そして、次のような行動を示します。

def show
  @user = User.find(params[:id])
end
于 2013-02-06T15:34:20.347 に答える