小编u19*_*964的帖子

如何在rspec中使用capybara来点击下拉选项

我在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点击退出,因为它位于下拉菜单中,因此在页面上不可见.有人知道吗 ?

有没有其他方法可以点击下拉菜单中的元素?

testing rspec ruby-on-rails logout capybara

20
推荐指数
3
解决办法
2万
查看次数

问号和冒号 - 如果在红宝石中

嗨我有关于铁轨上的红宝石的问题

显然我有这样的声明:

def sort_column
    Product.column_names.include?(params[:sort]) ? params[:sort] : "name"
end
Run Code Online (Sandbox Code Playgroud)

根据我的阅读,据说这种方法基于params [:sort]对列进行排序,如果没有params,产品将按"name"排序.但是,我不明白这个陈述的写法,特别是第二个"?".有人可以向我解释一下吗?

ruby ruby-on-rails ternary-operator

8
推荐指数
2
解决办法
2万
查看次数

JavaEE项目无法部署

我是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)

java connection glassfish java-ee

7
推荐指数
2
解决办法
2万
查看次数

如何使用capybara&rspec点击表格行

我正在使用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为这个功能写一个请求规范,但我不知道怎么做.谁可以帮我这个事 ?

谢谢

html5 capybara rspec-rails ruby-on-rails-3

6
推荐指数
2
解决办法
4659
查看次数

ActiveAdmin:无法批量分配受保护的属性:email,password,password_confirmation

我正在使用带有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)

ruby-on-rails mass-assignment devise activeadmin

6
推荐指数
1
解决办法
4015
查看次数

使用HttpClient POST提交带有上传的表单

我有一个看起来像这样的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的文档,据说只有字符串.

有谁知道如何处理上传部分?

html java forms http-post apache-httpclient-4.x

5
推荐指数
1
解决办法
7907
查看次数

HTML解析为Ruby中的DOM

Ruby中是否有任何HTML解析器将HTML文档读入DOM树并将HTML标记表示为DOM元素?

我知道Nokogiri,但它没有将HTML解析为DOM树.

html ruby dom html-parsing nokogiri

3
推荐指数
1
解决办法
2012
查看次数

Java:将属性从一个对象实例复制到另一个对象实例

说你有

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?

java reference object deep-copy shallow-copy

3
推荐指数
1
解决办法
1318
查看次数

Rails Devise允许1个人注册

我有一个供个人使用的Rails应用程序,它使用Devise进行身份验证.我希望我的应用只有一个用户.换句话说,如果已经有1个用户注册,如何在Devise中禁用注册?

我正在考虑在控制器中创建自定义方法.但是有什么好方法可以做到这一点吗?

singleton ruby-on-rails registration devise

1
推荐指数
1
解决办法
112
查看次数

在Rails中使用Devise 3.2.3 - 无法注销

我正在使用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)

authentication rake ruby-on-rails devise

0
推荐指数
1
解决办法
624
查看次数

Ruby循环遍历一个对象的某些属性

在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取决于环路?

谢谢

ruby attributes metaprogramming ruby-on-rails

0
推荐指数
1
解决办法
1103
查看次数