首页 > 解决方案 > Ruby on Rails - 如何让非登录用户在我的帖子上留言?

问题描述

我有帖子模型

在我的 post_controller 上

  before_action :authenticate_user!, except: [:show]

所以来宾(非登录用户)可以看到我的帖子。

我的问题是

如何让访客(未登录用户)在我的帖子中留言?

例如: 假设消息模型有这些参数:

name:string
phone:string
email:String
text:text

在消息视图中我想要这样的东西:

<div>
<%= name %>
<%= phone %>
<%= email %>
<%= text %>
</div>

有什么建议吗?谢谢帮助!

标签: ruby-on-railsruby-on-rails-5.1

解决方案


1-如果消息是用于发布的,那么消息模型应该有post_id

消息.rb

belongs_to :post

2- 在posts#show行动中定义新的message

@message = Message.new

3 - 在您的每个帖子下方应该有一个消息表格

<%= form_for @message do |f|%>
  <%= f.text_field: name %>
  <%= f.email_field: email %>
  <%= f.text_field: phone %>
  <%= f.text_area: text %>
  <%= f.hidden_field: post_id, value: @post.id %>
  <%= f.submit: "Submit Message"%>
<% end %>

4进messages_controller.rb

before_action :authetnicate_user!, only: []

def create
  message = Message.new(message_params)
  if message.save
    #
  else
   #
  end
end
 private
 def message_params
  params.require(:message).permit(:name,:email,:phone,:text,:post_id,)
 end

推荐阅读