小编San*_*ago的帖子

Rails:重构,观点,帮助者:这一切是如何结合在一起的?

警告:Noob在这里.

我知道这是一个微不足道的主题,但是我很难弄清楚如何通过将他们的部分内容转化为帮助来简化我的观点.例如,我一直认为你的视图中的条件是提取助手的主要候选者,但我无法找到这样的例子,而我实现这一目标的尝试失败了.

例如,假设我有:

#index.html.erb

<% for beast in @beasts do -%>
  <% if beast.dead? -%>
    <%= beast.body %>
    <%= link_to "bury", bury_beast_path( :id => beast.id ) %>
  <% else -%>
    <%= beast.body %>
    <%= link_to "kill!", kill_beast_path( :id => beast.id ) %>
  <% end -%>
<% end -%>
Run Code Online (Sandbox Code Playgroud)

在我看来,这让我有点恼火,但我怎么能把它转移到助手呢?如果可能的话,进一步简化它.(我已经读到某个条件很糟糕的地方,但是如果没有它们,你可以编程任何东西.)

又如:我需要idbody的格式标记controller_action.到目前为止我得到的最好的是:

#index.html.erb

<body id="<%= controller_action %>">
Run Code Online (Sandbox Code Playgroud)

…和…

#application_helper.rb

def controller_action
  @id = @controller.controller_name + "_" + @controller.action_name
end
Run Code Online (Sandbox Code Playgroud)

我不是专家,但即使对我来说,这仍然是丑陋的.

为了使事情变得更复杂,Ryan Singer说了一些我喜欢的事情:将ERB视为图像标签,使用帮助器"揭示意图".然后在下一次呼吸说你应该没有助手的HTML,这是地狱的方式.WTF?两者如何兼容?如果它可以在视图中声明行为,那么肯定应该在幕后呈现大量的HTML吗?我无法掌握它.

所以,基本上就是这样.我很感激,如果有人可以分享一些关于这方面的想法,或者指出我对这个主题有一些深入的阅读 - …

refactoring views ruby-on-rails helper

16
推荐指数
2
解决办法
7395
查看次数

如何在Rails 4中在没有刷新的情况下在页面上提交表单和更新元素

我在尝试做一些我认为相当简单的事情时遇到了很多麻烦.

我有一个项目列表,比方说,todos.在该列表的底部,我有一个文本字段,我在其中添加新项目到该列表.我想这样做,以便新项目动态地添加到该列表的底部,而无需像聊天窗口那样刷新整个页面.

我提交了提交表单remote: true并成功提交,但没有重新加载页面,但我无法让新项目同时显示在列表的底部.我必须刷新页面才能看到更改.

我尝试了一些我在SO上找到的不同方法(这里不乏类似的问题)和网络,甚至是一个名为Sync的宝石,但每个都有自己的错误和问题,我无法工作正常.他们每个人都可能是自己的问题.所以我要问:是否有一个"配方"肯定会在Rails 4中成功实现这一点?

javascript ajax jquery ruby-on-rails ruby-on-rails-4

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

在性能(和分类)方面,分层数据与相关数据的优缺点是什么?

这与这个问题有关.这让我想到了这本书.相反,它是两者的孩子[Agriculture],并[Other]在树木[Books > Catalogs > Agriculture][Business & Industrial > Agriculture & Forestry > Other]分别,它可能只是站在自己有那些水平的标签,来代替.

在eBay等网站,将上市的所有记录的性能,成本,标签 [AgricultureCatalog]大量outweigth那些在上市的所有记录的[Books > Catalogs > Agriculture] 类别,所提供的数据正确归?

我意识到这可能是一个愚蠢的问题(不,我不认为我正在编写下一个eBay),但我不能动摇这种好奇心,更糟糕的是; 的诱惑 ; 所以我现在听起来很愚蠢,并且比以后做一些愚蠢或毫无意义的事情更能把握我的误解.

tags performance database-design hierarchy

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

在应用程序布局中呈现部分问题(Rails)

这是application.html.erb文件中的调用:

<%= render :partial => 'tasks/_new' %>
Run Code Online (Sandbox Code Playgroud)

这是部分渲染(_new.html.erb):

<% form_for @task do |f| -%>
  <%= f.text_field :body %>
  <%= submit_tag "Submit" %>
<% end -%>
Run Code Online (Sandbox Code Playgroud)

这是'tasks'控制器中的方法:

def new
  @task = Task.new

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @task }
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我一直得到的错误消息:

Missing template tasks/__new.erb in view path app/views
Run Code Online (Sandbox Code Playgroud)

它说错误在这一行:

<%= link_to "tasks", tasks_path %> <%= render :partial => 'tasks/_new' %>
Run Code Online (Sandbox Code Playgroud)

该文件位于正确的目录中.奇怪的是_文件名中有一个额外的错误.当我放弃并重命名部分时__new.erb,这是我得到的错误:

Called id for nil, which …
Run Code Online (Sandbox Code Playgroud)

forms ruby-on-rails

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

如何以编程方式处理英语收缩[正则表达式,JS,Ruby]

我正在捕获自然语言用户输入,我需要根据预定义的"正确"版本进行检查.这是微不足道的,但我不确定如何处理英语中收缩的变化.

假设我期待这句话I'm positive you don't know what you're doing.匹配需要准确,但我不想将用户锁定到一个变体中,因为这会让人感到沮丧.

那么,我应该手动输入该句子的每个可能的变体作为有效匹配吗?像这样:

"I'm positive you don't know what you're doing."
"I am positive you don't know what you're doing."
"I am positive you do not know what you're doing."
"I am positive you do not know what you are doing."
"I'm positive you don't know what you are doing."
...
Run Code Online (Sandbox Code Playgroud)

等等,想想更复杂的句子,你可以看到它变得多么令人发狂.

或者,有没有一种程序化的方式我可以处理这个?使用Regex,JS,Ruby或Rails(我正在使用的工具)?

任何帮助表示感谢,谢谢.

javascript ruby regex algorithm ruby-on-rails

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

如何在Rails中实现这种逐步参与/懒惰注册?

很久以前我遇到了一个网站(我遗憾地丢失了地址,它是某种报纸网站),它让你可以像使用注册用户一样利用一切.您可以评价,收藏和评论文章,当您这样做时,它会显示一条谨慎的嵌入式消息,说明您必须在网站上注册才能保存您的贡献.然后它有链接让你看看你的个人资料如果你的样子会是什么样子,我很惊讶地看到它在那里有我所有的活动; 我阅读和保存的文章,评论等等.我离开了网站,当我以后出于好奇心回到它时,它仍然保存了我的活动.

我认为这是有史以来最伟大的事情,现在我正在建立一个具有社交功能的网站,我也想采取这种方法.但我仍然是一个菜鸟,所以我不知道如何去做.你会怎么做?

user-experience ruby-on-rails lazy-registration

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

"无法识别您的适配器规范"Rails 4中与turbolinks相关的错误

我按照Rails指南的入门部分,welcome按照教程创建了控制器.我启动了服务器并打开了http://localhost:3000/,而不是<h1>Hello, Rails!</h1>它应该看到的,我得到了错误Did not recognize your adapter specification.

错误块只是application.html.erb文件中的一些HTML ,这是违规行:

<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
Run Code Online (Sandbox Code Playgroud)

如果我从文件中删除此行,它将按预期工作.我一派错误和它我看到了它可能有一些做的jsoncoffeescript宝石.我已经安装了这些宝石和最新的,与沿railsturbolinks宝石,据我可以告诉他们似乎都工作正常.

这不是必需的,但我想在我的Rails应用程序中使用turbolinks.对于出了什么问题一无所知也感觉不好.我怎么解决这个问题?

ruby-on-rails turbolinks

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

如何将多个模型与一个将在Rails中统治它们的模型联系起来?

比方说,我有四个完全独立的模型(Movie,Book,Game,Album控制类型的事情,我有我的媒体集合).有了它们,我可以CRUD并标记个人专辑,电影等.

但我需要跟踪,并做一些共同的事情,所有这些.所以我想我需要一个Item能给我一个item这样的表的模型:

| id | item_id | item_type | status | possession |
+----+---------+-----------+--------+------------+
| 01 |    01   |     1     |    3   |     2      |  

在哪里statuspossession位可以让我跟踪该项目是新的还是使用过,与我一起或借给(对谁,在另一张桌子上)等,表格本身会让我知道我有多少项目.所有这些都没有触及原来的四个模型及其对象,我认为应该只有关于它们的信息,而不是我能对它们做什么.编辑:请注意,每次添加电影或书籍时,它还必须items使用相关信息更新表格.

我是一个新手,我对如何去做有一些想法,但没有一个被证明是成功的.我知道要问很多,但我想知道,我怎么能做到这一点?

任何帮助将不胜感激,谢谢.

database-design model ruby-on-rails associations

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

如何在Ruby中编写不公平或有偏见的硬币翻转?

我需要做一个符合某种结果概率的硬币翻转.例如,一个硬币翻转,有67%的机会出现Heads,有83%的机会出现Tails等.

我设法得到我之后的结果,用100填充数组truefalse在等效分布中,然后随机选择一个项目.什么是更优雅的方式呢?

ruby probability coin-flipping

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