我在rails 3.2.3和capybara上使用ruby来帮助创建请求规范.我的目标是创建一个测试注销的规范请求.网页:
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown">
Welcome <%= current_user.first_name + " "+ current_user.last_name%>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<a href="#">
<%= link_to "Sign out", destroy_user_session_path, :method => :delete%>
</a>
</ul>
</li>
Run Code Online (Sandbox Code Playgroud)
对于测试,我有
describe "sign out" do
it "should let user to sign out" do
login_as user, :scope => :user
# click_on "Welcome #{user.first_name} #{user.last_name}"
# Now click on Sign out
end
end
Run Code Online (Sandbox Code Playgroud)
我不知道如何使用capybara点击退出,因为它位于下拉菜单中,因此在页面上不可见.有人知道吗 ?
有没有其他方法可以点击下拉菜单中的元素?
嗨我有关于铁轨上的红宝石的问题
显然我有这样的声明:
def sort_column
Product.column_names.include?(params[:sort]) ? params[:sort] : "name"
end
Run Code Online (Sandbox Code Playgroud)
根据我的阅读,据说这种方法基于params [:sort]对列进行排序,如果没有params,产品将按"name"排序.但是,我不明白这个陈述的写法,特别是第二个"?".有人可以向我解释一下吗?
我是Java EE的初学者.今天我尝试通过以下教程学习Java EE:http: //netbeans.org/kb/docs/javaee/javaee-gettingstarted.html
它基本上教授如何使用Netbeans从Java Web类别创建Web应用程序.
当我运行应用程序时,我得到了Build Failed错误消息,如下所示:
WebApplication1/build/web&name=WebApplication1&contextroot=/WebApplication1&force=true failed on GlassFish Server 3+
Error occurred during deployment: Exception while preparing the app : Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Error in allocating a connection.
Cause: Connection could not be allocated because: java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused.
Error Code: 0. Please see server.log for more details.
WebApplication1/nbproject/build-impl.xml:721: The module has not been deployed.
See …Run Code Online (Sandbox Code Playgroud) 我正在使用capybara写我的rails应用程序的请求规范.在我的代码中,我有类似的东西:
%table
%tbody
%tr{"on_click" => "location.href='some_link'"}
%td="Some attribute"
%td="Some attribute"
%td="Some attribute"
%td="Some attribute"
Run Code Online (Sandbox Code Playgroud)
这样我就可以使整行可以点击.我想用capybara为这个功能写一个请求规范,但我不知道怎么做.谁可以帮我这个事 ?
谢谢
我正在使用带有Activeise身份验证的ActiveAdmin的Rails.我有AdminUser和User模型,因此User模型不必关心admin.但是,我无法在Admin页面中创建/编辑Adminuser或User FROM INSIDE.每次我尝试这样做,它都会给我留言
Can't mass-assign protected attributes: email, password, password_confirmation
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为在User模型和AdminUser模型中,我已经拥有:
attr_accessible :email, :password, :password_confirmation
Run Code Online (Sandbox Code Playgroud)
为了尝试其他方式,我去了rails控制台并尝试创建一个AdminUser,这一切都有效:
AdminUser.create(:email => 'asdf@admin2.com',
:password => 'password', :password_confirmation => 'password')
Run Code Online (Sandbox Code Playgroud)
这意味着只有管理员网页的创建失败.
我正在使用Devise进行身份验证.User和AdminUser模型都会发生错误.
对于password和password_confirmation,我在数据库中没有这些字段,但这是Devise默认的方式,它在数据库中从不拥有密码.
这是用户模型:
devise :database_authenticatable, :registerable, :rememberable, :recoverable, :trackable, :omniauthable, :omniauth_providers => [:facebook]
##, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid
# attr_accessible :title, :body
validates :email, :password, :first_name, :last_name,
presence: true
validates :email, uniqueness: true
has_many :devices
has_many :posts
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的html表单:
<div class="field>
<input id="product_name" name="product[name]" size="30" type="text"/>
</div>
<div class="field>
<input id="product_picture" name="product[picture]" size="30" type="file"/>
</div>
Run Code Online (Sandbox Code Playgroud)
我想编写一个自动创建产品的Java模块.这是我已经拥有的:
HttpHost host = new HttpHost("localhost", 3000, "http");
HttpPost httpPost = new HttpPost("/products");
List<BasicNameValuePair> data = new ArrayList<BasicNameValuePair>();
data.add(new BasicNameValuePair("product[name]", "Product1"));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(data, "UTF-8");
httpPost.setEntity(entity);
HttpResponse postResponse = httpClient.execute(host, httpPost);
Run Code Online (Sandbox Code Playgroud)
这很好用,它可以创建名为"Product1"的新产品.但我不知道如何处理上传部分.我希望看起来像这样:
data.add(new BasicNameValuePair("product[name]", "Product1"));
Run Code Online (Sandbox Code Playgroud)
但它不是"Product1"而是文件.我阅读了HttpClient的文档,据说只有字符串.
有谁知道如何处理上传部分?
Ruby中是否有任何HTML解析器将HTML文档读入DOM树并将HTML标记表示为DOM元素?
我知道Nokogiri,但它没有将HTML解析为DOM树.
说你有
public class Car{
private Engine m_eng;
public Car(){
}
public Engine getEngine(){
return m_eng;
}
public void setEngine(Engine engine){
m_eng = engine;
}
}
public class Engine{
private String m_name;
public Engine(){};
public Engine(String name){ m_name = name;}
public String getName(){
return m_name;
}
public void setName(String name){
m_name = name;
}
}
public static void main(String[] args){
Engine eng1 = new Engine("abc");
Car car1 = new Car();
car1.setEngine(eng1);
Car car2 = new Car();
car2.setEngine(car1.getEngine());
}
Run Code Online (Sandbox Code Playgroud)
问题:car1和car2的引擎是引用相同的Engine实例,还是当我这样做时car2.setEngine(car1.getEngine()),它会自动生成car1.getEnginer()的深层副本并设置为car2?
我有一个供个人使用的Rails应用程序,它使用Devise进行身份验证.我希望我的应用只有一个用户.换句话说,如果已经有1个用户注册,如何在Devise中禁用注册?
我正在考虑在控制器中创建自定义方法.但是有什么好方法可以做到这一点吗?
我正在使用devise 2.1.0 for rails app 3.2.3.这是我做的:
Add gem 'devise' to Gemfile and run bundle
Run rails g devise:install
Run rails g devise User
Setup db by running rake db:migrate
Run Code Online (Sandbox Code Playgroud)
application.html.erb是这样的:
<%if user_signed_in? %>
Welcome <%= current_user.email%>
<%= link_to "Sign out", destroy_user_session_path%>
<% else %>
<%= link_to "Sign up", new_user_registration_path %> or
<%= link_to "Sign in", new_user_session_path %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
登录和注册工作正常,但当我单击退出时,我收到一条错误消息:
路由错误
没有路由匹配[GET]"/ users/sign_out"尝试运行rake路由以获取有关可用路由的更多信息.
这是rake路线的输出:
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
user_password POST /users/password(.:format) …Run Code Online (Sandbox Code Playgroud) 在Rails中,我有一个类名User,我只想看一下:name, :address, :age
我想写一段代码,如下所示:
user = User.new
[name, address, age].zip(["Name", "Address", 10]).each do |attribute, val|
user.attribute = val
end
Run Code Online (Sandbox Code Playgroud)
事情是我不知道如何正确地做,因为user.attribute显然不是一个有效的线.换句话说,反正是有,这样user.attribute得到的评价user.name,user.address,user.age取决于环路?
谢谢
devise ×3
java ×3
ruby ×3
capybara ×2
html ×2
activeadmin ×1
attributes ×1
connection ×1
deep-copy ×1
dom ×1
forms ×1
glassfish ×1
html-parsing ×1
html5 ×1
http-post ×1
java-ee ×1
logout ×1
nokogiri ×1
object ×1
rake ×1
reference ×1
registration ×1
rspec ×1
rspec-rails ×1
shallow-copy ×1
singleton ×1
testing ×1