Rails为消息创建回复

时间:2012-01-07 14:23:54

标签: ruby-on-rails

用这样的隐藏字段创建表单是否正确:

#show.html.haml
= semantic_form_for @reply do |f|
      = f.hidden_field :sender, :value => @message.sender_id
      = f.hidden_field :receiver, :value => @message.receiver_id
      = f.hidden_field :title, :value => @message.reply_title
      = f.input :content, :as => :text
      = f.submit

#private_messages_controller.rb
  def show
    @message = PrivateMessage.find(params[:id])
    @message.read! if @message.receiver == current_user
    @reply = PrivateMessage.new
  end

  def new
    @message = PrivateMessage.new
  end

  def create
    @message = PrivateMessage.new params[:private_message]
    @message.sender = current_user
    if @message.save
      redirect_to user_path(@message.receiver), :notice => "Wiadomość została wysłana"
    else
      render :new
    end
  end

要回复私信,还是有更好的方法呢?

2 个答案:

答案 0 :(得分:1)

当然,这是正确的方法,因为您用作隐藏字段的所有变量都链接到特定的表单而不是某种会话,所以这是存储这些的好方法我认为

答案 1 :(得分:1)

我从经验中学到,隐藏的字段通常是不正确方法的标志。

在这种情况下,对于发件人,我会查看范围,在这种情况下使用关系,然后构造像current_user.message

我将使message_Type(值为private和public)成为flag的变量,而不是另一个Model。

所以我的方法可能是首先让模型正确,然后再建立它们。