我在葡萄api应用程序中使用active-record 4.0,但由于强参数仅适用于rails控制器,我如何在葡萄api类中允许params
如何在rails 4中使用具有强参数的acts_as_taggable_on gem?
有:
class User < ActiveRecord::Base
acts_as_tagger
end
class Post < ActiveRecord::Base
acts_as_taggable
end
@post = current_user.tag(@post, :with => :tag_list)
def post_params
params.require(:post).permit(:text, :user_id, :tag_list)
end
Run Code Online (Sandbox Code Playgroud)
如何将(post_params)添加到@post?
我正在使用设计来注册我的用户.我正在自定义注册控制器的创建操作,但是每当我尝试创建任何新用户时,它都被拒绝,我得到上述错误.我知道我必须允许所需的参数,我这样做我不明白为什么我一直收到错误.到目前为止,贝娄是我的考验.
#user model
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
belongs_to :country
#rest of the code
end
## Custom registeration controller
class RegistrationsController < Devise::RegistrationsController
def create
@user = User.new(params[:user])
if @user.save
sign_in(@user, bypass: true)
redirect_to user_employee_steps_path(@user),
notice: 'A confirmation email was sent to your email, please complete your profile
and confirm your account to start looking for potential employees'
else
render 'new'
end
end
end
#new.html.erb the view for the registration sign up
<h2>Sign …Run Code Online (Sandbox Code Playgroud) 我是一个相对较新手,因此非常感谢您的协助。
我正在使用带有Clearance gem的Rails 4.2进行身份验证。我希望有人能描述覆盖控制器以在sign_up表单上包含自定义属性的最佳实践。
我已经阅读了很多建议,其中包含各种建议,其中许多来自以前版本的不使用strong_parameters的rails。
如果有人可以简要介绍我需要超越的方法(user_params / user_from_params / etc),我将不胜感激。我可以通过定义只包含@user = User.new的新“ new”方法和使用.permit的新“ user_params”方法来使事情正常运行,但是我担心在user_from_params中绕过的默认代码。
任何有关最佳实践的建议都很棒!
谢谢
我希望在Rails 4应用程序中构建一组简单的计算器,我对如何设置模型和控制器感到有点失落.
在这个例子中,我有一系列计算器,它们具有非常相似但在某些情况下略有不同的输入/变量和略有不同的计算方法.
我的第一个尝试是简单地创建一个没有模型的计算器控制器,但很快就会丢失我将处理诸如形式参数和计算逻辑之类的东西.
鉴于计算器需要一些稍微不同的输入和计算方法,创建模型对我来说也没什么意义.
最后,在这种情况下,创建多个模型似乎也是一种非常混乱的方法.
所以考虑到所有这些,我想知道是否有人能告诉我如何处理这个问题的Rails方式.如果有助于获得更多信息,我希望建立与以下电子表格相同的方法:http://www.widerfunnel.com/proof/roi-calculators
任何帮助将非常感谢!
ruby activerecord ruby-on-rails strong-parameters ruby-on-rails-4
我有一个带有嵌套fields_for的表单.我试图允许由该嵌套表单生成的参数,但它们被强参数阻止.我使用rails 4.2.4和ruby 2.2.2
我读过一些官方文档:
我已经阅读了相关的SO帖子:
我读过各种博文:
我想我正在按照他们的意思去做,但是我的嵌套属性被强参数拒绝了.我Unpermitted parameters: __template_row__, 0, 1, 2, 3在日志中得到的东西.
这是我的代码:
车型/ enclosure.rb
class Enclosure < ActiveRecord::Base
has_many :resident_animals, -> { order("year DESC, month DESC") }, dependent: :restrict_with_error
validates :name, presence: true, uniqueness: {case_sensitive: false}
accepts_nested_attributes_for :resident_animals, allow_destroy: true, reject_if: :all_blank
def to_s
name
end
end
Run Code Online (Sandbox Code Playgroud)
车型/ resident_animal.rb
class ResidentAnimal < ActiveRecord::Base
belongs_to :enclosure
validates_presence_of :enclosure, :year, :month, :color
...
end
Run Code Online (Sandbox Code Playgroud)
控制器/ enclosures_controller.rb
class EnclosuresController < ApplicationController …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我最初创建了一个用户脚手架,然后我创建了一个Devise User模型,只是将属性添加到User模型,但是在我的用户控制器中,每当我尝试使参数"username"成为允许的参数时,它仍然会吐出来错误"用户名不是允许的参数".
我的user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :rememberable, :trackable, :validatable
belongs_to :role
def email_required?
false
end
def email_changed?
false
end
end
Run Code Online (Sandbox Code Playgroud)
我的用户控制器
class UsersController < ApplicationController
before_filter :authenticate_user!
before_action :set_user, only: [:show, :edit, :update, :destroy]
# GET /users
# GET /users.json
def index
@users = User.all
end
# GET /users/1
# GET /users/1.json
def show
end
# GET /users/new
def new
@user = User.new …Run Code Online (Sandbox Code Playgroud) 在我的一个控制器中,我有这条线:
params.require(:ad).permit(permitted_array)
Run Code Online (Sandbox Code Playgroud)
params[:ad]哈希.当此哈希中存在允许的密钥时,此行正常工作.如果params[:ad]是空哈希,则上述行失败.
示例:对于params被
{"ad"=>{}, "controller"=>"ads", "action"=>"create"}
Run Code Online (Sandbox Code Playgroud)
params.require(:ad)调用后我收到此错误:
ActionController::ParameterMissing:
param is missing or the value is empty: advertiser
Run Code Online (Sandbox Code Playgroud)
但这很好用:
[2] pry()> params
=> {"ad"=>{"name"=>"kjj", "ad_type_id"=>1, "fee"=>"9", "click_attr"=>"8", "imp_attr"=>"7"}, "controller"=>"ads", "action"=>"create"}
[3] pry()> params.require(:ad).permit(permitted_array)
=> {"name"=>"kjj", "ad_type_id"=>1, "fee"=>"9", "click_attr"=>"8", "imp_attr"=>"7"}
Run Code Online (Sandbox Code Playgroud)
如何让这一行接受空哈希?
考虑到这些参数:
"product"=><ActionController::Parameters {"id"=>"",
"category_ids"=><ActionController::Parameters {"2"=>"1", "3"=>"1", "4"=>"1"} ,
"name"=>"...", "description"=>"a good prod", "size"=>"2x3m", "price"=>"23$", "url_video"=>"http://...", "remarks"=>"bla"}
Run Code Online (Sandbox Code Playgroud)
我想CATH category_ids PARAMS { "2"=> "1", "3"=> "1", "4"=> "1"}用正确的permit和requiresintax,比我不知道:
执行时
params.require(:product).permit(:name, :size,..., category_ids: [] )
Run Code Online (Sandbox Code Playgroud)
结果是
Unpermitted parameters: id, category_ids
Run Code Online (Sandbox Code Playgroud)
我试过params.require(:product).permit(:category_ids[:id,:val])......和其他变种
什么是正确的sintax?
PD:这些参数是例如:
<input type="checkbox" name="product[category_ids][2]" id="product_category_ids_2" value="1">
<input type="checkbox" name="product[category_ids][3]" id="product_category_ids_3" value="1">
Run Code Online (Sandbox Code Playgroud)
为了一个has_and_belongs_to_many关系
class Product < ActiveRecord::Base
has_many :images, dependent: :destroy
has_and_belongs_to_many :categories, autosave: true
attr_accessor :category_list
end
class Category < ActiveRecord::Base
has_and_belongs_to_many :products …Run Code Online (Sandbox Code Playgroud) 我的数据库上有一个customers表,并且有一个名为“ last_updated_by”的列。我想在此字段中将当前用户名添加为纯文本。
我在我的应用程序上安装了devise,因此它为我提供了current_user参数。
1-
def customer_params
params.require(:customer).permit(:name, :last_updated_by=>current_user.name)
end
2-
def customer_params
params[:last_updated_by] = current_user.name
params.require(:customer).permit(:name, :last_updated_by)
end
3-
def customer_params
last_updated_by = current_user.name
params.require(:customer).permit(:name, :last_updated_by=>current_user.name)
end
Run Code Online (Sandbox Code Playgroud)
如何在控制器中设置一些默认值。