Tag: params

ActiveModel :: ForbiddenAttributesError使用update_attributes创建了params hash

我正在尝试使用simple_form编辑/更新模型记录,但表单不会直接更改模型字段。 相反,我提供了几个check_box_tag字段,用于告知更新需要更改的字段。 因此,更新未收到可用于更新属性的params [:device]哈希。 我试图创建这个哈希,但是当我发出@ device.update_attributes(params [:device])时,我得到了ForbiddenAttributesError。 我相信我的强参数列表是正确的。 如果我允许在编辑视图中处理一个模型字段(名称),我会收到预期的参数[:device]哈希,一切正常。 如果我禁用该字段,因为我不希望它被更改,那么我需要自己创建该哈希并收到错误。 当我查看我创建的哈希时,它看起来等同于视图传递的哈希。 我不明白为什么会失败。 环境是Ruby 2.0.0,Windows 8.1上的Rails 4.1和RubyMine 6.3。 表单是: Device: 我发送f.input:name,disabled:false并允许视图生成params [:device]时收到的params [:device]是: ActionController::Parameters (3 element(s)) “{“name”=>”D105”, “password”=>”D105Dvgr”, “password_confirmation”=>”D105Dvgr”}” 一切正常。 我创建的参数[:device]是: ActionController::Parameters (3 element(s)) “{“name”=>”D106”, “password”=>”D106VdAd”, “password_confirmation”=>”D106VdAd”}” 并且,我收到禁用属性错误,即使我看到两者之间没有区别。 更新是: class DevicesController ‘Not authorized as an administrator.’ @device = Device.find(params[:id]) pwd_msg = “” if params[:chg_pwd] pwd_gen = […]

Ruby,如何将一个param添加到一个你不知道它是否已经有任何其他param的URL

我必须在不确定的URL中添加一个新的参数,让我们说param=value 。 如果实际的URL已经像这样params http://url.com?p1=v1&p2=v2 我应该将URL转换为另一个: http://url.com?p1=v1&p2=v2&param=value 但是如果URL没有任何参数,那么: http://url.com 我应该将URL转换为另一个: http://url.com?param=value 我觉得用Regex解决这个问题很担心,因为我不确定是否存在并且可能已经足够了。 我想也许我应该将URL转换为URI对象,然后添加param并再次将其转换为String。 寻找已经处于这种情况的人的任何建议。 更新 为了帮助参与,我正在共享一个基本的测试套件: require “minitest” require “minitest/autorun” def add_param(url, param_name, param_value) # the code here “not implemented” end class AddParamTest < Minitest::Test def test_add_param assert_equal("http://url.com?param=value", add_param("http://url.com", "param", "value")) assert_equal("http://url.com?p1=v1&p2=v2&param=value", add_param("http://url.com?p1=v1&p2=v2", "param", "value")) assert_equal("http://url.com?param=value#&tro&lo&lo", add_param("http://url.com#&tro&lo&lo", "param", "value")) assert_equal("http://url.com?p1=v1&p2=v2&param=value#&tro&lo&lo", add_param("http://url.com?p1=v1&p2=v2#&tro&lo&lo", "param", "value")) end end

在Rails记录器中包含参数/请求信息?

我正在尝试在Rails日志中获取更多信息,特别是请求的URI或当前参数(如果可用)(我感谢他们并非总是这样)。 但是我似乎无法做到。 这是我到目前为止所做的: #config/environments/production.rb config.logger = Logger.new(config.log_path) config.log_level = :error config.logger.level = Logger::ERROR #config/environment.rb class Logger def format_message(level, time, progname, msg) “**********************************************************************\n#{level} #{time.to_s(:db)} — #{msg}\n” end end 所以我可以自定义消息,但我似乎无法在这里访问params / request变量。 有谁知道这是否可能,如果是这样的话怎么样? 或者,如果有更好的方法来获取此信息? (甚至可能是Redis的基础?) 谢谢你, 担

Sinatra和问号

我需要用Sinatra制作一些看起来像的方法: 访问http //:本地主机:1234 /添加string_to_add 但是,当我宣布它是这样的: get “/add?:string_to_add” do … end 它没有看到string_to_add参数。 我应该如何声明我的方法并使用此参数来使事情有效?

如何使用私人提交来隐藏个人资料?

当用户通过private提交时,我们如何隐藏来自Feed的提交信息以及能够在其公开个人资料中看到它的其他用户? … … 我们将下面的内容放在控制器中,但由于私有按钮将包含许多不同的_forms,我是否必须将它放在每个控制器中,还是可以将它放在应用程序控制器中? if params[:private] # the private action / What do we need to put here? else # normal submit / and here? 我跟着这个铁路播放节目几乎到了T来构建活动源: http ://railscasts.com/episodes/406-public-activity。 以下是公开个人资料的代码: users_controller.rb def show @user = User.find(params[:id]) @habits = @user.habits @valuations = @user.valuations @accomplished_goals = @user.goals.accomplished @unaccomplished_goals = @user.goals.unaccomplished @averaged_quantifieds = @user.quantifieds.averaged @instance_quantifieds = @user.quantifieds.instance end show.html.erb […]

如何从Rails中的date_select或select_date获取日期?

使用select_date会给我一个带有year , month和day属性的params[:my_date] 。 如何轻松获取Date对象? 我希望像params[:my_date].to_date这样的东西。 我也很高兴使用date_select 。