Rails getter和setter函数不能与表单一起使用

时间:2014-06-18 17:36:40

标签: ruby-on-rails ruby

我的表单在Profile型号上看起来如此:

<%= form_for @profile do |f| %>
    <div class="form-group">
        <%= f.label :email, "Email" %>
        <%= f.text_field :email, class: "form-control" %>    
        <%= f.label :tag_list, "HELLO!" %>
        <%= f.text_field :tag_list %>
    </div>

    <%= f.submit "Submit", class: "btn btn-success" %>
<%end%>

我有一个Tag模型,我想将标签应用到。

我的getter / setter函数:

def tag_list
  Rails.logger.error "names"
  tags.map(&:tag_name).join(", ")
end

def tag_list=(names)
  self.tags = names.split(",").map do |n|
    Rails.logger.error "names"
    self.tags.where(tag_name: n.strip).first_or_create!
  end
end

我的控制员:

def update
  redirect_to profile_path(params[:id])
end

def edit
end

它不会保存该配置文件的标签,也不会在日志文件中看到我的日志。

1 个答案:

答案 0 :(得分:1)

更新操作目前只执行重定向,因此@profile保持不变。在您调用@profile.update_attributes(params[:profile])或类似方法之前,不会运行setter方法。