rails 3查询字符串参数

时间:2011-09-21 18:51:49

标签: ruby-on-rails ruby-on-rails-3

我尝试使用new / create动作创建一个简单的消息控制器,当我调用新动作时,我通过查询字符串提供to_id param,

  

/消息/新?to_id = 1

包含收件人的ID,现在我的代码是:

def new    
    @message = Message.new    
    @message.to = User.find(params[:to_id])
  end

  def create 
    @message = Message.new(params[:message])
    @message.from = current_user

    respond_to do |format|
      if @message.save
        format.html { redirect_to messages_path }
      else 
        format.html { redirect_to common_error_path, :notice => "failed to send message" }
      end   
    end
  end

这是非常默认的,我的问题是在新操作中创建的@message对象中的更改在create action中不可用并且我丢失了to_id值,我首先想到的是使用to_id值存储会话对象,但我认为这不是最好的主意,也许有人有更好的解决方案

1 个答案:

答案 0 :(得分:1)

您需要在create上使用POST传回该参数。例如,如果您有

belongs_to :to, :class_name => 'User'

Message模型上的

关联

app/views/messages/new.html.erb

<%= form_for @message do |f| %>
   <%= f.hidden_field :to_id %>
   ...
<% end %>

以上假设您的new行为保持不变。现在,在create行动中,您的params[:message]将等于{:to_id => 1},并会正确分配。

这有意义吗?