如何将部分表单的数据传递给Rails操作(使用javascript&没有嵌套属性)?

时间:2015-10-07 03:53:49

标签: javascript jquery ruby-on-rails ruby ruby-on-rails-4

我创建了一个来邀请新用户注册我的应用。只有已注册的用户才能邀请新用户。受邀用户将收到已注册用户的邀请电子邮件。

我在尝试添加动态电子邮件输入字段时感到困惑。我可以使用jQuery帮助添加其他字段,但我不知道如何将所有 $routeProvider. when('/admin', { templateUrl: 'Your template url', controller: 'AdminController', permission: 'AccessAdministration', resolve: { permissionList: function (permissionService) { return permissionService.getPermissions(); } } }) 输入数据传递到users_controller.rb文件中的email操作。

我不打算使用nested attributes,因为我没有将任何内容保存到数据库中。

应用/视图/用户/ add_users.html.erb

send_email

应用/视图/用户/ _new_user.html.erb

<%= form_tag(send_email_path, method: :post) do %>
    <span id="fields">
        <%= render "new_user" %>
    </span>
    <%= button_tag(type: 'button', id: "addBtn") do %>Add<% end %>
<% end %>

<script>
    $("#addBtn").click(function(){
        $("#fields").append("<br/><%= j render 'new_user' %>");
    });
</script>

users_controller.rb

<label>User</label>
<br>
<%= email_field_tag 'email', nil, class: 'email-input', id: "email-input" %>

应用/邮寄者/ add_user_mailer.rb

def send_email

    AddUserMailer.sign_up_email(current_user, params[:email]).deliver_now
    redirect_to '/'

end

的routes.rb

class AddUserMailer < ApplicationMailer
    default from: 'example@example.com'

    def sign_up_email(user, address)
        @url = "http://localhost:3000/users/sign_up?sc=#{user.customer.secret_code}&cust=#{user.customer.id}"
        mail(to: address, subject: "Sign up")
    end

end

1 个答案:

答案 0 :(得分:1)

将您的app/views/users/_new_user.html.erb文件更改为以下内容:

<label>User</label>
<br>
<%= email_field_tag 'email[]', nil, class: 'email-input', id: "email-input" %>

请注意,email_field_tag的第一个参数(输入字段的名称)已从email更改为email[]。这是一个将params[:email]设置为数组的Rails约定。

然后,您可以将users_controller.rb修改为以下内容:

def send_email
  params[:email].each do |email_address|
    AddUserMailer.sign_up_email(current_user, email_address).deliver_now
    redirect_to '/'
  end
end