Ruby on rails 铁路3号及;设计:跟踪谁拥有用户帖子的个人资料
我的应用程序有一个用户模型和一个帖子模型,其中用户有很多帖子,帖子属于用户。帖子显示在用户的个人资料页面上。我想让任何用户都能够发布自己的,或任何其他用户的个人资料页面。然而,我遇到的问题是,虽然我知道谁在发帖(当前用户),但我不知道当前用户的个人资料在谁的个人资料上。我需要知道这一点,以便将新帖子分配给该用户的帖子。如何从当前查看的配置文件中提取用户id信息,以便我知道在哪里分配新帖子 我的micropost控制器看起来像:Ruby on rails 铁路3号及;设计:跟踪谁拥有用户帖子的个人资料,ruby-on-rails,post,devise,identify,Ruby On Rails,Post,Devise,Identify,我的应用程序有一个用户模型和一个帖子模型,其中用户有很多帖子,帖子属于用户。帖子显示在用户的个人资料页面上。我想让任何用户都能够发布自己的,或任何其他用户的个人资料页面。然而,我遇到的问题是,虽然我知道谁在发帖(当前用户),但我不知道当前用户的个人资料在谁的个人资料上。我需要知道这一点,以便将新帖子分配给该用户的帖子。如何从当前查看的配置文件中提取用户id信息,以便我知道在哪里分配新帖子 我的micropost控制器看起来像: class MicropostsController < Ap
class MicropostsController < ApplicationController
before_filter :authenticate_user!
def create
@user_of_page = User.find_by_name(params[:id])
@micropost = @user_of_page.microposts.build(params[:micropost])
if @micropost.save
flash[:success] = "Micropost created!"
redirect_to :back
else
redirect_to about_path
end
end
def destroy
end
end
class MicropostsController
但是对于nil:NilClass,我得到了一个NoMethodError:undefined方法“microposts”。我假设这是因为我在创建user_of_page变量时犯了一些错误,但我不知道这是什么
解决方案
谢谢你,山姆。我接受了你的建议,结果是这样做的:
<%= form_for @micropost do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<div class="field">
<%= f.label :content, "Why that mood?" %>
<%= f.text_area :content %>
</div>
<div class="field">
<%= f.hidden_field :author, :value => current_user.name %>
<%= f.hidden_field :belongs_to_id, :value => @user.id %>
<%= f.hidden_field :agree, :value => "0" %>
<%= f.hidden_field :disagree, :value => "0" %>
<%= f.hidden_field :amused, :value => "0" %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
<% end %>
class MicropostsController < ApplicationController
before_filter :authenticate_user!
def create
@user_of_page = User.find(params[:micropost][:belongs_to_id])
@micropost = @user_of_page.microposts.build(params[:micropost])
if @micropost.save
flash[:success] = "Micropost created!"
redirect_to :back
else
redirect_to about_path
end
end
def destroy
end
end
f、 对象%>
当前用户名%>
@user.id%>
"0" %>
"0" %>
"0" %>
<%= form_for @micropost do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<div class="field">
<%= f.label :content, "Why that mood?" %>
<%= f.text_area :content %>
</div>
<div class="field">
<%= f.hidden_field :author, :value => current_user.name %>
<%= f.hidden_field :belongs_to_id, :value => @user.id %>
<%= f.hidden_field :agree, :value => "0" %>
<%= f.hidden_field :disagree, :value => "0" %>
<%= f.hidden_field :amused, :value => "0" %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
<% end %>
class MicropostsController < ApplicationController
before_filter :authenticate_user!
def create
@user_of_page = User.find(params[:micropost][:belongs_to_id])
@micropost = @user_of_page.microposts.build(params[:micropost])
if @micropost.save
flash[:success] = "Micropost created!"
redirect_to :back
else
redirect_to about_path
end
end
def destroy
end
end
class MicropostsController
魔法!再次感谢您,您帮助我正确地看待它。我会这样做:
class profiles_controller < AC
...
def show
@profile = User.find(params[:id]).profile || current_user.profile
@post = Post.new
end
..
end
/profiles/show.html.erb
...
Name: <%= @profile.full_name %>
...
<%= form_for @post do |f| %>
<%= hidden_field_tag @profile.user %>
...
<% end %>
class microposts_controller < AC
def create
profile_user = User.find(params[:user_id]) # Owner of the profile current_user is on
..
end
end
class profiles\u控制器
没有测试。希望这有帮助。User.find\u by_name(params[:id])返回nil。重新检查是否有参数[:id]!就是这样!我不知道我是否有它…我假设它存在,因为该行在我的用户显示视图中成功使用。也许我应该澄清一下:这是识别拥有当前正在查看的配置文件的用户的正确方法吗?我只想将microspost分配给您发帖的页面的用户,但我不知道如何识别该用户