在视图中选中复选框,在模型中运行操作

时间:2013-09-01 16:16:33

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

我有两个模型:ProjectAccount

我希望用户在创建Account时是否要创建新的Project,以便我在表单中创建check_box_tag来创建新项目。

<%= form_for @project, html: {multipart: true} do |f| %>
    .
    .
    <%= check_box_tag('create_account_checkbox') %> Create new account
    .
    .
<% end %>

project.rb模型中我有这个:

class Project < ActiveRecord::Base
  after_create :create_account
  .
  .
  .
  def create_account
    if #Here I need to add smth like `check_box.checked?`
      Account.create(:name => name, ...and so on)
    end
  end
end

我需要添加哪些代码才能使它们正常工作?

谢谢!

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点 - 单向:

将mattr_accessor(rails 4)添加到您的项目中,您可以使用复选框进行设置:

class Project < ActiveRecord::Base
  mattr_accessor :create_account

  after_create :create_account if: :requested_account?

  def requested_account?
    create_account
  end

  ...
end

现在请注意,您的复选框会返回一些将被解释为布尔值的内容。

(我没有对此进行过测试 - 可能存在mattr_accessor未设置的问题,保存后发生了对..的检查)