我正在为大学开发一个用户可以登录的应用程序&上传远足径的详细信息。
到目前为止,一切正常,并且我还为每条远足径中的照片实施了嵌套表格。用户可以登录&创造一个徒步旅行。
我想显示用户在show / profile页面中创建的所有徒步旅行,但是当我在我的数据库和我的数据库中建立关系时has_many
&我的模型中有belongs_to
个选项。我也尝试用嵌套的accepts_nested_attributes_for :hikingtrails
做到这一点,但这没有任何效果。
当用户创建了徒步旅行车时,我检查了我的数据库,但没有更新表格中的user_id字段。
我不确定我是否完全以错误的方式接近这个,我应该关注多态关联吗?
class User < ActiveRecord::Base
attr_accessible :user_name, :email, :password, :password_confirmation, :photos_attributes, :hikingtrails_attributes
has_many :hikingtrails
accepts_nested_attributes_for :hikingtrails, :allow_destroy => :true, :reject_if => :all_blank
class Hikingtrail < ActiveRecord::Base
attr_accessible :description, :name, :looped, :photos_attributes,:directions_attributes, :user_id
has_many :photos
has_many :trails
has_many :directions
belongs_to :user
用户/ show.html.erb
<div class="page-header">
<h1>Your Profile</h1>
</div>
<p>
<b>username:</b>
<%= @user.user_name %>
</p>
<p>
<b>email:</b>
<%= @user.email %>
</p>
<h4>Small Photos</h4>
<% @user.photos.each do |photo| %>
<%= image_tag photo.image_url(:thumb).to_s %>
<% end %>
<h4>Hiking Trails</h4>
<% @user.hikingtrails.each do |hk| %>
<%= hk.name %>
<% end %>
<%= link_to "Edit your Profile", edit_user_path(current_user), :class => 'btn btn-mini' %>
答案 0 :(得分:1)
您没有将:user_id
添加到Hikingtrail模型中的可访问属性中。请尝试以下方法:
attr_accessible :description,
:duration_hours,
:duration_mins,
:name,
:looped,
:addr_1,
:addr_2,
:addr_3,
:country,
:latitude,
:longitude,
:photos_attributes,
:trails_attributes,
:directions_attributes,
:user_id
<强>更新强>: 看到表单代码后,我认为可能没有必要执行上述操作,并且可能也不安全。相反,不要通过质量分配设置user_id,而是在控制器中处理用户分配,如下所示:
class HikingtrailsController < ApplicationController
# ...
def create
@hikingtrail = Hikingtrail.new(params[:hikingtrail])
@hikingtrail.user = current_user
if @hikingtrail.save
# ...
else
# ...
end
end
end
希望这会有所帮助:)