繁体   English   中英

Rails 3查询字符串参数

[英]rails 3 query string params

我尝试使用new / create动作制作一个简单的消息控制器,当我调用通过查询字符串给to_id参数的new动作时,

/ messages / new?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

这是非常默认的设置,我的问题是,在new动作中对@message对象所做的更改在create动作中不可用,并且我失去了to_id值,我首先想到的是使用会话对象存储to_id值,但我认为这不是最好的主意,也许有人对此有更好的解决方案

您需要在创建时通过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}并将正确分配。

那有意义吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM