【发布时间】:2012-06-27 13:54:52
【问题描述】:
您好,我已经被这个问题困扰了一段时间,非常感谢您的帮助。我正在编写一个 API 以允许像浏览器查询字符串或智能手机这样的外部源在表单中输入一些模型用户信息并点击用户创建操作以将数据写入数据库。请告诉我我在下面的代码中做错了什么。
我还观察到,如果我有像 @user = User.new(params[:user]) 这样的代码,那么这种方法只有在用户在表单中输入他们的数据时才有效。
如果我有 @user = User.new(name: params[:name], location: params[:location], password = params[:password], email: params[:email]) 这样的代码,此代码仅适用于查询字符串条目,但不适用于查询字符串和常规表单提交。
为什么会这样?如何在 Users Controller Create 操作中编写上面的代码,以便处理这两种情况?
使用的网址:localhost:3000/users/create?name=John&&email=john@email.com&&password=secret&&location=SanFrancisco&date=06122012
日期是字符串类型,但它不显示在数据库中。为什么?其他都可以。
UsersController.rb
定义创建
@user = User.new(params[:user])
if @user.save
session[:uid] = @user.id
redirect_to thanks_path, notice: "Welcome #{@user.name}!"
else
redirect_to root_path
end
结束
新用户表单:
<%=u.text_field :name, placeholder: "Name"%><br>
<%=u.text_field :email, placeholder: "Email"%><br>
<%=u.password_field :password, placeholder: "Password"%><br>
<%=u.text_field :location, placeholder: "City"%><br>
<%=u.text_field :date, placeholder: "Date"%><br>
<%if params[:partner_id]%>
<%=u.hidden_field :partner_id, value: params[:partner_id]%>
<%end%>
<button class="btn btn-large btn-primary">Enter</button>
我还尝试创建一个名为 remotecreate 的单独方法,用于为常规 Web 表单以外的其他内容创建用户。我在查询字符串中输入了remotecreate,但它不起作用。
定义远程创建 @user = User.create(name: params[:name], email: params[:email], password: params[:password], 位置:参数 [:位置],日期:参数 [:日期]) 如果@user.save 会话[:uid] = @user.id 重定向到Thanks_path,注意:“欢迎#{@user.name}” 别的 重定向到根路径 结尾 结束
谢谢!
【问题讨论】:
标签: ruby-on-rails api params