请我一直在做这个项目,我需要将一些旅馆属性分配给具有角色的特定用户。我使用 devise、rolify 和 cancan 创建了一个宿舍模型和一个用户模型。我还创建了一个分配模型,其属性为旅馆 ID 和用户 ID。以下是我的代码以便更好地检查。
我的宿舍模型
class Hostel < ActiveRecord::Base
has_many :assign_hostels
attr_accessible :name, :location, :picture
default_scope :order => 'id DESC'
end
用户模型
class User < ActiveRecord::Base
has_many :assign_hostels
attr_accessible :email, :password, :first_name, :lastname, :oname
rolify
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
我的 assign_hostel 模型
class AssignHostel < ActiveRecord::Base
belongs_to :user
belongs_to :hostel
attr_accessible :user_id, :room_id
validate :user_id, :uniqueness => true
end
在我的宿舍页面中,在我创建了宿舍列表之后。我创建了一个分配宿舍按钮,它将打开一个新的分配页面以列出所有具有搬运工角色的用户
<%= link_to 'Assign', accommodation_new_assign_hostel_path(:id => hostel.id) %>
控制器中的新分配
def new_assign_hostel
@search = Search.new(:user, params[:search], :per_page => 2)
@search.order = 'email'
@users = @search.run
@hostel = Hostel.find(params[:id])
@porters = Role.find_by_name('porter').users
@assign_hostel = AssignHostel.new(:hostel_id => params[:hostel_id])
respond_to do |format|
format.js
end
end
在我的新分配页面上,我创建了这个
<% @porters.each do |porter| %>
<%= porter.email %>
<%= render 'assign_hostel_form' %>
<% end %>
下面的assign_hostel_form部分
<%= form_for @assign_hostel, url: accommodation_create_assign_hostel_path(:hostel_id => @hostel.id) do |f| %>
<%= f.hidden_field :hostel_id, value: @assign_hostel.hostel_id %>
<%= f.hidden_field :user_id, value: @assign_hostel.user_id %>
<%= f.submit "Assign" %>
<% end %>
但点击分配按钮后,似乎没有选择任何宿舍或用户 ID。请问我该如何解决这个问题。