当前位置: 首页 > 知识库问答 >
问题:

Rails 3.1 API使用查询字符串在Mac OSX Mountain Lion上创建操作时出现的问题

葛哲彦
2023-03-14

你好,我被这个问题困扰了一段时间,非常感谢你的帮助。我正在编写一个API,允许浏览器查询字符串或智能手机等外部源在表单中输入一些模型用户信息,并点击用户创建操作将数据写入数据库。请告诉我下面的代码我做错了什么。

我还观察到,如果我有@user=user这样的代码。新的(params[:user]),该方法仅在用户在表单中输入数据时有效。

如果我有像@ user = user . new(name:params[:name],location: params[:location],password = params[:password],email: params[:email])这样的代码,那么这个代码只适用于查询字符串条目,而不适用于查询字符串和常规表单提交。

为什么会这样,以及如何在“用户控制器创建”操作中编写上述代码,以便它同时处理这两种情况?

使用的URL:localhost:3000/users/create?姓名=约翰

日期是字符串类型的,但它没有显示在数据库中。为什么?其他一切都可以。

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,但它不起作用。

def Remote tecreate@user=User.create(name: params[: name], email: params[: email],密码: params[:密码],位置: params[:位置], date: params[: date])if@user.save会话[: uid]=@user.idredirect_tothanks_path,注意:“欢迎#{@user.name}”否则redirect_toroot_path结束

谢谢!

共有1个答案

闻人升
2023-03-14

在你的控制器里..

def create
  @user = User.new

  if params[:user] && params[:user][:email]  # Form submission
     @user = User.new(params[:user])

  else      # Url-inlined submission
    @user = User.new
    @user.attributes = params
  end

没有测试@user属性 = 参数,但认为它应该有效。你总是可以做的

@user.email = params[:email]
@user.something = params[:somethings]
...
 类似资料:
  • 问题内容: 有没有人知道我可以用来操纵查询字符串的java类? 本质上,我想要一个可以简单地给查询字符串提供一个类,然后删除,添加和修改查询字符串KVP的类。 提前致谢。 编辑 为了回应对此问题的评论,查询字符串将如下所示; 所以我想向这个类传递查询字符串,并说类似的东西; 然后也许 有可能 或类似的东西。 问题答案: 像这样 要简单地迭代地图:

  • 我试图创建一个jooq查询字符串以下方式 结果查询字符串使用另一个单引号转义了单引号,这是默认的mySQL单引号转义方式。 但是我需要单引号用反斜杠转义,因为我正在为salesforce形成查询字符串。(称为SOQL)。 我需要这样的查询字符串 我已经看了jooq库代码,这是在Default绑定类中硬编码的 我有没有办法通过DSL可以传递的配置或设置来覆盖这种默认行为。使用(*,*)?

  • 问题内容: 我使用ostermillerutils库创建base64字符串,但是如果图像很重,则会出现OutOfMemory错误。如果我尝试转换的图像是简单图像,则代码工作正常。 我也尝试这样做,但是当我尝试对它进行解码时,base64是不正确的。 请为JDK 1.4和更高版本的Java建议解决方案。 问题答案: 我通过使用javabase64-1.3.1.jar库解决了我的问题。 我首先将bas

  • 问题 你想在字节字符串上执行普通的文本操作(比如移除,搜索和替换)。 解决方案 字节字符串同样也支持大部分和文本字符串一样的内置操作。比如: >>> data = b'Hello World' >>> data[0:5] b'Hello' >>> data.startswith(b'Hello') True >>> data.split() [b'Hello', b'World'] >>> dat

  • 我是thymeleaf新手,我想使用thymeleaf url创建动态查询字符串。对于分页,我在所有页面中使用公共片段和include片段。在所有页面中都有搜索选项,还需要分页进行搜索。所以,我们需要在搜索条件的分页中传递动态查询字符串。但是当我创建动态查询字符串时,URL会对特殊字符进行编码,如和

  • 并试图创建如下所示的核心, 但得到以下错误: 安装新的核心实例目录:/home/admin/hadooptools/solr-5.3.0/solr-cores/core1/hdfsstarted 请让我知道如何在HDFS中正确创建核心。