rails 在view中引用关联model值

  今天遇到一个问题。情景是这样的,有一张表invite和一张group表。group跟invite是一对多关系即

  

group.rb
    has_many :invites

invite.rb
   belongs_to :group

  在创建invite的时候需要同时添加其属于那个group,这是我就蛋疼了。于是上网找资料,从afly中那边获知了fields_for这么一个帮助程序。

  在invite的new.html.erb中如下写

  

<%= form_for(@invite) do |f| %>
        <div class="field">
            发送给<%= fields_for :receiver,@invite.receiver do |receiver_field| %>
                <%= receiver_field.text_field :name %>
            <% end %>
        </div>
        <div class="field">
            添加到<%= fields_for :group,@invite.group do |group_field| %>
                <%= group_field.text_field :name %>
            <% end %>
        </div>
        <div class="field">
            <%= f.submit "确定"%>
        </div>
    <% end %>

receiver是接收着,与user表是一对多的关系。这样就可将invite.receiver跟invite.group赋值好了。

下面介绍后台代码的处理

receiver_name = params[:receiver][:name]
    group_name = params[:group][:name]
    @receiver = User.find_by_name(receiver_name)
    @group = Group.find_by_name(group_name)

通过http request中的params获得值。当时我很困惑params={"utf8"=>"✓", "authenticity_token"=>"yqinI6UF9qiGdBEmP3pNTTbZouSrnEK3f0u1ZZMAqHA=", "receiver"=>{"name"=>"Tom"}, "group"=>{"name"=>"杭电学生会"}, "commit"=>"确定"}

但是params[:receiver].name报错,原来处理应该按照上面的来,ruby真心奇葩。。。

 

posted on 2013-04-26 22:05  小海少  阅读(220)  评论(0编辑  收藏  举报