我有2个班级:Father和Child
public class Father implements Serializable, JSONInterface {
private String a_field;
//setter and getter here
}
public class Child extends Father {
//empty class
}
Run Code Online (Sandbox Code Playgroud)
有了反射,我想a_field在Child课堂上设置:
Class<?> clazz = Class.forName("Child");
Object cc = clazz.newInstance();
Field f1 = cc.getClass().getField("a_field");
f1.set(cc, "reflecting on life");
String str1 = (String) f1.get(cc.getClass());
System.out.println("field: " + str1);
Run Code Online (Sandbox Code Playgroud)
但我有一个例外:
线程"main"中的异常java.lang.NoSuchFieldException:a_field
但如果我尝试:
Child child = new Child();
child.setA_field("123");
Run Code Online (Sandbox Code Playgroud)
有用.
使用setter方法我有同样的问题:
method = cc.getClass().getMethod("setA_field");
method.invoke(cc, new Object[] { "aaaaaaaaaaaaaa" });
Run Code Online (Sandbox Code Playgroud) 是否可以使用查询字符串中的新参数重定向回引用URL?
这样的事情:
redirect_to :back, custom_param='foo'
Run Code Online (Sandbox Code Playgroud) 我有一个带有simple_form gem的表单.如果我使用锚标记对浏览器中的网址进行数字处理,则可以:
localhost:3000/contacts/#new_contact #show me the correct form in the page
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
class ContactsController < ApplicationController
def index
@message = Contact.new()
end
def create
@message = Contact.new(msg_params)
@message.request = request
if @message.deliver
redirect_to contacts_path , flash: { success: 'Ok' }
else
render action: :index #how can i render the new_contact anchor??
end
rescue ScriptError
redirect_to contacts_path , flash: { error: 'spam' }
end
private
def msg_params
params.require(:contact).permit(:name,:email,:message,:spam)
end
end
Run Code Online (Sandbox Code Playgroud)
这是我的表格:
<%= simple_form_for @message, defaults: { label: false} do |f| %> …Run Code Online (Sandbox Code Playgroud) 我有一个自定义js文件app/assets/javascripts.这是js文件:
//app/assets/javascripts/contacts.js
//$(document).ready(function() { //I've already tried with this method
$(window).load(function() {
alert("foo bar")
});
Run Code Online (Sandbox Code Playgroud)
我需要contacts.js文件中的application.js文件.
如果我检查html页面,我看到正确加载了js文件,但是没有显示该消息.如果我重新加载页面(通过按f5),则正确显示该消息.
当页面加载时,加载了javascript(我可以在浏览器的源代码中看到它)但是没有执行.
你能帮助我吗?
javascript ruby ruby-on-rails asset-pipeline ruby-on-rails-4
我正在使用 Capybara 2.4.4 单击链接。html是这样的:
<a name="skiplink" id="skiplink" type="button" href="javascript:void(0);" onclick="skipForm(); return false;">salta</a>
Run Code Online (Sandbox Code Playgroud)
水豚命令:
find("a", :text => "salta").click
find('skiplink').click
Run Code Online (Sandbox Code Playgroud)
两者都不起作用:
Failure/Error: find("a", :text => "salta").click
NoMethodError:
undefined method `empty?' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
我已经从save_and_open_page输出中复制粘贴了 html,所以它可能是正确的
我正在使用默认驱动程序(无硒)
谢谢
在simple_form中可以使用http delete动词而不是默认的post动词吗?
<%= simple_form_for @object , method: :delete do |f| %>
<%= f.input :instance_name, as: :check_boxes, collection: @roles %>
<%= f.button :submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
它不起作用.
我有一个事件模型:
class Event < ActiveRecord::Base
belongs_to :author, class_name: 'User'
end
Run Code Online (Sandbox Code Playgroud)
我可以输入控制台:
e=Event.last
e.author
Run Code Online (Sandbox Code Playgroud)
在rails_admin中,当我创建一个新事件时,我不想在表单中显示author_id字段.我想在控制器中设置这样的东西:
@e=Event.new(params)
@e.author_id=current_user.id
@e.save
Run Code Online (Sandbox Code Playgroud)
可以在rails_admin中执行吗?
我在官方维基中找到了这个文档,但我不想使用cancan能力,我不想在表单中设置一个隐藏字段的author_id字段因为安全性很危险,实际上是POST请求可以使用自定义author_id覆盖.我想简单地在控制器中分配author_id.有可能吗?
在rails_admin gem中,我有一个带有某个字段的模型.在列表操作中可以查看除一个字段以外的所有字段吗?如果我写:
rails_admin do
list do
field :name
end
end
Run Code Online (Sandbox Code Playgroud)
我只看到这个字段,我需要反向行为.我找不到任何解决方案
#somethis like this
rails_admin do
list do
field :default , except :created_at
end
end
Run Code Online (Sandbox Code Playgroud)
你能帮助我吗?
一个可能的解决方法是列出所有必要的字段,但在我看来并不是很干净
解决方案 这对我有用:
list do
exclude_fields :created_at
end
Run Code Online (Sandbox Code Playgroud) 在 ruby 中,我有一个这样的字符串:
str= 43,69 €
Run Code Online (Sandbox Code Playgroud)
使用正则表达式可以获得43,69吗?
我试过:
/\d+(?:\.\d+)?/
Run Code Online (Sandbox Code Playgroud)
但输出不正确: 43.0
在 Rails 中,我试图本地化日期:
2.1.1 :005 > Date.today
=> Mon, 14 Apr 2014
2.1.1 :006 > I18n.localize(Date.today)
=> "14/04/2014"
2.1.1 :007 >
Run Code Online (Sandbox Code Playgroud)
第二个输出不是第一个的正确翻译!
你能帮助我吗 ?
使用Extjs 5我正在定义我的自定义工具栏:
Ext.define('Core.toolbar.view.ToolbarView',
{
extend: 'Ext.toolbar.Toolbar',
dock: 'top',
items: [
{
xtype: 'button',
text: 'add'
},
{
xtype: 'button',
text: 'remove'
}]
});
Run Code Online (Sandbox Code Playgroud)
现在我想用它:
Ext.define('MyApp.view.ToolbarView',
{
extend: 'Core.toolbar.view.ToolbarView',
items: [
{
xtype: 'button',
text: 'ADDING AN OTHER BUTTON'
}]
});
Ext.create('MyApp.view.ToolbarView');
Run Code Online (Sandbox Code Playgroud)
使用items属性我用新项目覆盖旧项目,但我不想这样做.我想添加第三个按钮.
有可能吗?
使用Extjs 3.4.我正在网格上创建一个顶部工具栏.
Ext.onReady(function() {
var colModel = new Ext.grid.ColumnModel({
columns: [{
header: "Sottogruppo",dataIndex: 'some'
}],
defaults: {
width: 50,
sortable: false
}
});
var saveButton = new Ext.Button({text: "Salva",id: 'save'});
var tbar = new Ext.Toolbar({items: [saveButton]});
var grid = new Ext.grid.EditorGridPanel({
colModel: colModel,
tbar: tbar
});
grid.render("grid");
});
Run Code Online (Sandbox Code Playgroud)
chrome控制台显示以下错误:
Uncaught TypeError: Cannot read property 'getSortState' of undefined ../JS/ext-3.3.1/ext-all-debug.js
Run Code Online (Sandbox Code Playgroud)
想法?
解决方案 在网格配置中添加商店:
store: new Ext.data.ArrayStore()
Run Code Online (Sandbox Code Playgroud) javascript ×3
ruby ×3
extjs ×2
rails-admin ×2
simple-form ×2
anchor ×1
bdd ×1
capybara ×1
extjs5 ×1
field ×1
i18n-gem ×1
java ×1
rails-i18n ×1
reflection ×1
regex ×1
render ×1
rspec ×1
tdd ×1