我一直在使用邮箱宝石为我的rails应用程序进行用户按摩。
出于某种原因,我无法呈现消息表单,并且我的值不会被传递,例如user.id 这样做的方法是什么?我知道我已经接近了,但我正在用这个来抚摸硬核 在我的观看/帖子/ show.html.erb中:
<strong>title & author</strong>
<h2><%= @post.title %></h2>
<p><%= @post.author %></p>
</div>
<strong>course</strong><br />
<h1><%= @post.course %></h1>
<strong>school</strong><br />
<h1><%= @post.school %></h1>
<strong>price</strong><br />
<h1><%= @post.price %></h1>
<p>
<strong>Posted by</strong><br />
<%= @post.email %>
</p>
<br />
<h2>Description</h2>
<h1><%= word_wrap(@post.description, :line_width => 8) %></h1>
<br />
DATE POSTED: <%= @post.created_at %><br /><br />
</div>
<%= link_to "reply", new_message_path %>
<!--%= render 'messages/form', conversation: conversation % -->
当我点击新邮件路径时,这是它转到的页面: 视图/消息/ new.html.erb
Send a message to
<%= @user.username %>
<%= form_tag({controller: "messages", action: "create"}, method: :post) do %>
<%= label_tag :subject %>
<%= text_field_tag :subject %>
<%= label :body, "Message text" %>
<%= text_area_tag :body %>
<%= hidden_field_tag(:user, "#{@user.id}") %>
<%= submit_tag 'Send message' %>
<% end %>
我想传递帖子用户名的值,或者将post.email传递给邮件表单。
我尝试这样做的另一种方式,我喜欢这样做的方式是 &lt;%= render&#39; messages / form&#39;,conversation:conversation%&gt; 但是当我这样做时,我得到了
undefined method error for 'conversation'
视图/消息/ _form.html.erb:
Reply:
<%= form_for :message, url: [:reply, conversation] do |f| %>
<%= f.text_area :body %>
<%= f.submit "Send Message", class: 'btn btn-primary' %>
<%= submit_tag 'Clear Reply Box', type: :reset, class: 'btn btn-danger' %>
<% end %>
基本上我想在帖子中添加一个回复按钮,让用户向发布的用户发送消息。我正在使用设计,所有用户都已登录。
答案 0 :(得分:1)
您应该在routes.rb ...
中定义嵌套在post下的新邮件 resources :posts do
resources :messages, only: [:new, :create]
end
那会给你一条路 new_post_message获取/发布/:posts_id / messages /新消息#create
您可以将帖子指定为链接的一部分
<%= link_to 'reply', new_post_message_path(@post) %>
将param [:post_id]传递给messages控制器中的create方法,以便您可以检索帖子,将其设置为实例变量,并以view / messages / new格式使用它。