我已经创建了一个基本的用户名/密码生成器,可以创建X随机用户名和密码。我使用this帖子作为基础。它在控制台中运行正常但我不明白如何让它在我的RoR3.1应用程序中正常工作。
我需要创建一个简单的表单,我可以输入以下变量:
然后,当我点击保存时,我需要应用程序创建X用户名和密码并保存到数据库。
我已经设法通过在页面加载时调用操作来使其工作,但我不知道如何创建将传递变量的表单。
我在我的用户模型中创建了这个:
class User < ActiveRecord::Base
private
def self.generate_batch
10.times do
username = ""
password =""
5.times { username << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }
5.times { password << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }
User.create!(:username => username, :check_attributes => [ {:attribute_name => "User-Password", :value => password, :op => ":="}])
end
end
end
在我的用户控制器中,我创建了一个新操作:
def new_batch
@user = User.new
respond_to do |format|
if @user.save
@user = User.generate_batch
else
format.html { render action: "new_batch" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
在我的路线中:
get "/batch" => "users#new_batch"
我从一个空白表单开始,看看我是否至少可以使用硬编码的变量:
= simple_form_for @user do |f|
= f.submit
当我点击提交时,看起来它试图使用我的创建操作,而不是生成批处理...
我需要做什么:
提前致谢
- 更新 -
按照以下建议,我创建了两个控制器:
routes.rb现在有这个:
get "/batch" => 'users#new_batch'
put "/batch" => 'users#new_batch_create'
控制器是这样的:
def new_batch
end
def new_batch_create
@user = User.generate_batch
end
现在,当我点击提交时,它会循环处理:)
仍然不太明白如何从表单中传递变量......
答案 0 :(得分:0)
你应该创建2个控制器。一个打电话来获取表格,一个发布/获取您的行动。 这与常规控制器New / Edit和Create / Update相同。
如果您的视图中有一个用于创建字段的对象,请使用下面的表单
= form_for(@user, :method => :put, :url => url_for({:controller => :users, :action => :new_batch)) do |f|
= f.submit 'Submit', {:class => 'btn'}
否则只需使用_tag
助手
= form_tag("/batch"", :method => :get) do |f|
= submit_tag 'Submit', {:class => 'btn'}