【问题标题】:How can I allow users to post on others' profiles如何允许用户在其他人的个人资料上发帖
【发布时间】:2013-04-30 05:46:06
【问题描述】:

我的用户有很多微博。微博属于用户。现在只有用户可以在他/她的个人资料上发帖。我怎么能让每个人都在那里发帖。我已经运行了一个迁移,将列“sender_id”添加到 Micropost 表中,但我似乎无法弄清楚如何使用 sender_id。我是 Rails 新手,感谢阅读。

微博创建控制器:

@user = User.find(73) #change so it posts to the user page im on
@micropost = @user.microposts.build(params[:micropost])
@micropost.sender_id = current_user.id
if @micropost.save
  flash[:success] = "Music Posted!"
  redirect_to :back
end

微博形式:

<%= form_for(@micropost) do |f| %>
  <div class="field">
    <%= f.text_area :comment, placeholder: "send a message" %>
  </div>
    <%= f.submit "Share", class: "btn btn-medium btn-primary" %>
<% end %>

在 Microposts 表中,我希望 User_id 是拥有个人资料的人,而 Sender_id 是在其他人的个人资料上发帖的用户。

解决方案是在微博表单中添加 hidden_​​field_tag 以获取 user_id 参数集,然后 @user = User.find(params[:user_id])

【问题讨论】:

    标签: ruby-on-rails forms model-view-controller


    【解决方案1】:

    您可以将代码更改为:

    @user = User.find(73) #change so it posts to the user page im on
    @micropost = @user.microposts.build(params[:micropost])
    @micropost.sender = current_user # or whatever indicates your current user
    if @micropost.save
      flash[:success] = "Music Posted!"
      redirect_to :back
    end
    

    【讨论】:

    • 这取决于您使用的路由。如果您有类似 /users/:user_id/microposts 的内容,那么您可以输入 params[:user_id] 而不是“73”。您应该在执行操作时检查 params 变量包含的内容,以确定您是否已经可以检索此信息。
    • @user = User.find(params[:user_id]) 返回“找不到没有 ID 的用户”。我以为它会起作用。是不是因为没有创建帖子,所以帖子的 user_id 为零?
    • 您确定是users/:user_id 而不是users/:id 吗?运行rake routes,看看你实际查看的页面的url格式是什么。
    • 对不起 /users/:id(.:format) 那是个人资料页面上的 User#show
    • 好的,这样就可以通过params[:id]找到用户了
    猜你喜欢
    • 1970-01-01
    • 2011-05-20
    • 2020-11-04
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    相关资源
    最近更新 更多