【问题标题】:Ruby on rails adding users to groupsRuby on rails 将用户添加到组
【发布时间】:2012-06-19 04:19:33
【问题描述】:

我正在构建一个包含用户、学校和学校组模型的社交网站。用户通过 has_many 到 schoolgroups 加入学校,并在学校中扮演不同的角色。我在编写用户可以单击以申请学校的在线 form_for 按钮时遇到问题。创建 schoolgroup 对象时需要包含的参数是 user_id、school_id 和角色“申请人”。我知道我可以使用 current_user.schoolgroups.build 让表单初始化创建操作并包含正确的 user_id,但我遇到的问题是如何编写一个表单,将 school_id 发送到控制器以创建新的 schoolgroup 对象.我代码中的@school 实例变量只是正确代码应该是的占位符

def create
  @school = School.find(params[:schoolgroups][:school_id)
  current_user.schoolgroups.build(school_id: @school.id, user_id: current_user.id, role: 'applicant')
  respond_with school_path
 end

<%= form_for( current_user.schoolgroups.build(params[school_id: @school.id]), 
                                                       remote: true) do |f| %>
  <div><%= f.hidden_field :school_id %></div>
   <%= f.submit "Apply", class: "btn btn-large btn-primary" %>
   <% end %>

【问题讨论】:

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


    【解决方案1】:

    我会走这条路

    # in routes
    resources :schools do
      member do
        put :apply
      end
    end
    
    # in schools_controller.rb
    def apply
      @school = School.find(params[:id])
      @schoolgroup = current_user.schoolgroups.create(school: @school, role: 'applicant')
      respond_with @schoolgroup
    end
    
    #in your view
    <%= link_to "Apply", apply_school_path(@the_school_var_you_define_somewhere), remote: true, method: :put,
      class: "btn btn-large btn-primary" %>
    

    这更简单,更符合 Rails 精神。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多