我想有一个函数来修改一些变量参数列表,但它们都是值类型(int,string).有一种方法可以让params关键字与ref关键字一起使用或者接近这个关键字吗?
public void funcParams(params object[] list)
{
/* Make something here to change 'a', 'b' and 'c' */
}
public void testParams()
{
int a = 1, b = 2, c = 3;
funcParams(a, b, c);
}
Run Code Online (Sandbox Code Playgroud)
问题是,我正在努力让我的生活变得更容易,制作一个修改对象字段的方法.我正在使用Cecil进行一些动态代码生成,我试图避免编写过多的IL生成代码.
为了简化,我想通过引用传递字段列表,我需要更改为一个更改它们的函数,而不是通过生成相应的IL来更改它们.一些参数可以为空,使代码生成更加痛苦.在这种情况下,使用一些重载方法而不是params将没有多大用处.
根据文档,FILL_PARENT基本上让视图占用了整个额外的空间.重量还决定了视图可以占用多少空间.有什么不同?
例如:我使用时会发生什么,
new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1.0f)
Run Code Online (Sandbox Code Playgroud) android params android-layout android-linearlayout android-layout-weight
有一些旧代码在某种情况下会修改params.我相信它之前有效(不是100%).我们现在将params设置为nil,无论条件是否满足.
罪魁祸首是在条件之内,我执行了params = tmp.dup.即使条件为假,也会导致更新操作出错.
我能够通过最小的测试重新创建
(Rails 2.3.5)
rails bug;
cd bug;
script/generate scaffold bug name:string;
rake db:create;
rake db:migrate;
Run Code Online (Sandbox Code Playgroud)
编辑apps/controllers/bugs_controller.rb添加到更新操作的开头
l_p = params.dup
if (false)
params = l_p.dup # NOT REACHED
end
Run Code Online (Sandbox Code Playgroud)
脚本/服务器WEBrick -p 5001
浏览到http:// localhost:5001/bugs 创建一个新的bug编辑错误提交
我的控制器如下:
def participated = {
def temp = ConferenceUser.get(params.temp)
def prizes = Prizes.findAllByConferenceUser(temp) // find all rooms where current computer is
def subms = Submissions.findAllByConferenceUser(temp) // find all rooms where current computer is
[temp: temp, priz: prizes, subm: subms]
}
Run Code Online (Sandbox Code Playgroud)
但不知何故,当我成功更新会议价值时,我想回到初始页面(参与),但我不知道如何传回params.temp.(如果我做一个简单的重定向,正如控制器所期望的那样params.temp,它会给我一个错误,因为我无法使用null对象作为参数搜索奖品.所以,想象一下我的更新控制器如下:
def update = {
def saveParamshere = params.temp
...
...
(code here)
...
...
redirect(action: "participated", params: [temp: saveParamshere])
}
Run Code Online (Sandbox Code Playgroud)
此代码无效.如何成功返回主页并传入params.temp?
我有一个link_to发送变量的问题.使用form_for和submit按钮工作正常,但我需要使用link_to发送数据.
这适用于form_for:
<%= form_for (@post), :method => :post, :remote => true, :html => { :id => "#{@post.id}" }, :url => { :controller => "posts", :action => "follow", :post_id => post.id } do |f| %>
<%= f.submit "Follow" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这不起作用:(:
<%= link_to post_path(@post), :method => :post, :remote => true, :html => { :id => "#{@post.id}" }, :url => { :controller => "posts", :action => "follow", :post_id => post.id } do%>
<em></em>
<%= "Follow" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
最后,link_to不发送params,我的控制器没有收到params并得到错误类型 …
我有一个方法,其最后一个参数是params string[].我希望搜索一个程序集并使用params至少一个值来计算传递参数的用法数.
对这个方法有几百个调用,其中大多数都没有传递给最后一个params参数,所以使用像ReSharper的Find Usages这样的东西来计算那些没有传递给params参数的用法是不切实际的.
我如何使用反射/反汇编来做到这一点?或者,有没有可以做到这一点的工具?
我有一个'run'对象,可以在其中保存许多'层'.运行接受图层的嵌套属性,但是在发生各种不良事件之前,rails无法确保嵌套对象的参数有效.我正在尝试检查任何层上的'deposition_source_id'参数是否为空.我怎样才能遍历图层?
该行可以从一个层或任何层获取参数."0"指定图层.
params[:run][:layers_attributes]["0"][:deposition_source_id]
我该如何检查每一层?这些是参数:
=> {"utf8"=>"?",
"_method"=>"put",
"authenticity_token"=>"T+X6sSda5vV19hpMZEAdf5RWSKPhJrm/q9+NXxTC5G8=",
"run"=>
{"number"=>"31310.0",
"start_time_string"=>"08/08/2012 at 11:08 AM",
"system_id"=>"4",
"technician_id"=>"4",
"duration"=>"",
"base_pressure"=>"",
"platters"=>"Apples",
"overcoats_string"=>"",
"planetary"=>"",
"layers_attributes"=>
{"0"=>
{"deposition_source_id"=>"",
"material_id"=>"60",
"lot_id"=>"118",
"thickness_goal"=>"32",
"measured_thickness"=>"3",
"tooling_factor"=>"",
"sensor_number"=>"",
"xtal_life"=>"",
"release_agent"=>"0",
"_destroy"=>"false",
"id"=>"3401"}}},
"commit"=>"Update Run",
"action"=>"update",
"controller"=>"runs",
"id"=>"2319"}
Run Code Online (Sandbox Code Playgroud) 我正试图将url params从任何页面保存到会话中,因此如果有人在离开其着陆页导航后填写表单,则会保留广告系列ID.我已经设法让它逐页工作,所以如果它们在带有参数的表格上着陆它会保留它,但是如果它们导航它们显然不会.我目前有:
控制器:
def campaign
if params[:campaign]!= nil
session[:campaign] = params[:campaign]
end
end
def post
rif = Registerinterest.find(:all, :conditions => ["reference = ?", session[:campaign]])
if rif.count == 0
post["Campaign_ID"] = "701D00000001111"
else
post["Campaign_ID"] = rif.first.campaign_id
end
end
Run Code Online (Sandbox Code Playgroud)
当我使用params而不是会话时它起作用,所以我假设我没有正确保存它?
我正在尝试使用Postman chrome扩展程序向我的Ruby on Rails应用程序发送帖子请求,但我一直收到错误
Run Code Online (Sandbox Code Playgroud)ActionController::ParameterMissing (param not found: order): app/controllers/orders_controller.rb:27:in order_params' app/controllers/orders_controller.rb:20:in create
我的orders_controller中的代码是
class OrdersController < ApplicationController
protect_from_forgery :except => :create
def new
@order = Order.new
end
def index
@orders = Order.all
end
def show
@order = Order.find(params[:id])
end
def create
@order = Order.new(order_params)
render text: params[:product]
end
private
def order_params
params.require(:order).permit(:product)
end
end
Run Code Online (Sandbox Code Playgroud)
我对Postman扩展的关键值对是 product[product_name] Samsung
我想对我的Rails 4应用程序使用以下查询,但我担心SQL注入攻击:
@persons = People.where("persons.name LIKE ?", "%#{params[:search]}%")
Run Code Online (Sandbox Code Playgroud)
有人能告诉我写上述陈述的安全方法吗?我尝试了以下但不确定它是否是SQL注入证明:
search = "%" + params[:search] + "%"
@persons = People.where("persons.name LIKE ?", search)
Run Code Online (Sandbox Code Playgroud)
谢谢!
params ×10
c# ×2
controller ×2
ruby ×2
android ×1
c#-4.0 ×1
controllers ×1
grails ×1
il ×1
reference ×1
reflection ×1
session ×1
sql-like ×1
url ×1