小编Mik*_*ord的帖子

计算数组中的元素数量

我想要计算我在Twig中的数组中的条目数.这是我试过的代码:

{%for nc in notcount%}
{{ nc|length }}
{%endfor%}
Run Code Online (Sandbox Code Playgroud)

但是,这仅产生数组中某个值的字符串的长度.

{{nc}} 将产生数组的所有值的输出(有2)但我希望输出只是数字2(计数)而不是数组中的所有信息.

twig

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

无法写出未知属性`scrapbook_entry_id'

尝试将数据添加到scrapbook_entries的联接表中,其中包含has_one:scrapbook和has_one:recipe.

:食谱和:剪贴簿已经存在.我正在尝试添加它们以将它们与scrapbook_entries表链接.

form_for添加到scrapbook_entries表:

<%= form_for(@scrapbook_entry, :url => scrapbook_entries_path(params[:id])) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>
  <div class="field">
    <%=f.select(:scrapbook_id, current_user.scrapbooks.collect {|p| [ p.name, p.id ] },  {prompt: 'Select Scrapbook...'})%>
    <%= f.hidden_field :recipe_id, :value => @recipe.id %>
  </div>
  <%= f.submit "Save", class: "btn btn-large btn-primary" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

scrapbook_entries_controller:

def create
    @recipe = Recipe.find(params[:scrapbook_entry][:recipe_id])
    @scrapbook = current_user.scrapbooks.find(params[:scrapbook_entry][:scrapbook_id])

    @entry = @scrapbook.scrapbook_entries.build(scrapbook: @scrapbook)
    if @entry.save
        flash[:success] = "Added '#{@recipe.name}' to scrapbook '#{@scrapbook.name}'"
    else
        flash[:error] = "Could not add to scrapbook"
    end …
Run Code Online (Sandbox Code Playgroud)

ruby controller join model ruby-on-rails

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

用rails中的glyphicon替换提交按钮

快问.我有:

<%= f.submit "Like", class: "btn btn-large btn-primary" %>
Run Code Online (Sandbox Code Playgroud)

而不是文本阅读"喜欢"我想用以下内容替换整个按钮:

<span class="glyphicon glyphicon-thumb-up"></span>
Run Code Online (Sandbox Code Playgroud)

符号.

在rails中使用竖起大拇指图标替换提交按钮的正确方法是什么,但让它做同样的事情?

UPDATE

我找到了这个:

<%= button_tag(type: 'submit', class: "btn btn-primary") do %>
  <span class="glyphicon glyphicon-thumbs-up"></span> 
<% end %>
Run Code Online (Sandbox Code Playgroud)

但唯一的问题是,这仍然显示了glyphicon背后的按钮(即使我删除了btn btn-primary).有谁知道如何摆脱按钮?

谢谢!

ruby-on-rails submit glyphicons

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

模糊列名称:错误无法使用标记

我有一些代码按照它们的受欢迎程度显示我的食谱,如下所示.它存储在配方视图的索引文件中.

<% @all_recipes.this_week.reorder("likes_count DESC").limit(10).each do |i| %>
  <%=link_to image_tag(i.image(:fixed), alt: "MUC", :class => "browse-recipes"), i %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我已经传递了一个方法'this_week',它完美地定义为范围.

我的问题是,我在同一页面上有一个标签云,当我点击一个标签时,应该刷新页面,但只显示带有相关标签的那些食谱.这完全没有应用的this_week方法,但如果方法在那里我得到以下错误:

SQLite3::SQLException: ambiguous column name: created_at: SELECT  "recipes".* FROM     "recipes" JOIN taggings recipes_taggings_81e277c  ON recipes_taggings_81e277c.taggable_id = recipes.id AND recipes_taggings_81e277c.taggable_type = 'Recipe' AND recipes_taggings_81e277c.tag_id = 33 WHERE "recipes"."live" = 't' AND (created_at > '2014-01-13 00:00:00.000000')  ORDER BY likes_count DESC LIMIT 10
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?非常感激.

scope ruby-on-rails ambiguous

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

没有 Ransack::Search 对象被提供给 search_form_for

我意识到其他人已经问过这个错误,但它与不同的情况有关。

我为 rails 4 添加了 Ransack gem 并捆绑安装:

gem "ransack", github: "activerecord-hackery/ransack", branch: "rails-4"
Run Code Online (Sandbox Code Playgroud)

我还编辑了我的控制器如下(recipes_controller):

def index
if params[:tag]
  @all_recipes = Recipe.tagged_with(params[:tag])
else
  @all_recipes = Recipe.all
end
if signed_in?
  @user_recipes = current_user.recipes.order("created_at DESC").paginate(page: params[:page], :per_page => 10)
end
if params[:q]
  @q = Recipe.search(params[:q])
  @all_recipes = @q.result(distinct: true)
end
end
Run Code Online (Sandbox Code Playgroud)

然后我在表格中添加如下(食谱/索引):

<%= search_form_for @q do |f| %>
  <%= f.label :name_cont %>
  <%= f.text_field :name_cont %>
  <%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

No Ransack::Search object was provided to search_form_for! …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ransack ruby-on-rails-4

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

干净的方法来设计实体吐司中的通知/警报

我使用的设计在我的Rails应用程序和标准它配备了noticealert其具体行动渲染(例如,用户签约在)的方法.

我也在使用Materialize CSS框架,它们提供了一个很好的干净"Toast"样式通知.这是制作noticealert使用Toast 的第一种方法.

<% if notice %>
  <script type="text/javascript">
    Materialize.toast('<%= notice %>', 4000)
  </script>
<% end %>
<% if alert %>
  <script type="text/javascript">
    Materialize.toast('<%= alert %>', 4000)
  </script>
<% end %>
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供更清洁/更干的解决方案吗?感觉有点hacky.

javascript ruby-on-rails erb devise materialize

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

og:轨道上的红宝石中的图像元标记

我在页面上定义了一些动态图像:

<%= image_tag(@recipe.image.url(:fixed), :class => 'recipe_image_show') %>
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种使用此代码定义og:image的方法.og:下面看到的描述代码完美无缺:

<meta property="og:description" content= "<%= @recipe.description %>" />
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用下面的代码,那么它不想工作:

<meta property="og:image" content='<%= image_tag(@recipe.image.url(:fixed), :class => 'recipe_image_show') %>'/>
Run Code Online (Sandbox Code Playgroud)

有什么建议?我意识到我在这里使用了单引号但由于某种原因使用双引号导致页面忽略元标记的'/>'部分并将其显示为文本.

ruby facebook ruby-on-rails

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

group_by在ruby中多次

我有一系列哈希称为events:

events = [
  {:name => "Event 1", :date => "2019-02-21 08:00:00", :area => "South", :micro_area => "A"},
  {:name => "Event 2", :date => "2019-02-21 08:00:00", :area => "South", :micro_area => "A"},
  {:name => "Event 3", :date => "2019-02-21 08:00:00", :area => "South", :micro_area => "B"},
  {:name => "Event 4", :date => "2019-02-21 08:00:00", :area => "South", :micro_area => "B"},
  {:name => "Event 5", :date => "2019-02-21 08:00:00", :area => "North", :micro_area => "A"},
  {:name => "Event 6", …
Run Code Online (Sandbox Code Playgroud)

ruby group-by

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

在嵌入式红宝石中进行序列化

有没有一种快速方法可以对以下代码进行规范化?

<%= time_tag(Date.today, :format=>'%A %d %b') %>
Run Code Online (Sandbox Code Playgroud)

当前输出读取

Tuesday 18 Feb
Run Code Online (Sandbox Code Playgroud)

我想将日期显示为ordinalize

Tuesday 18th Feb
Run Code Online (Sandbox Code Playgroud)

有什么建议?

ruby ruby-on-rails date view

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

Ruby检查记录是否存在以及一行是否存在关联

我总会碰到的东西。我想做这个:

if current_user.exists? && current_user.role == "admin"
  # Do something
end
Run Code Online (Sandbox Code Playgroud)

显然,如果当前用户不存在,则返回时将不起作用 undefined method role for nil class

有没有一种方法我可以在没有多条If语句的情况下实现上述目的?

ruby if-statement ruby-on-rails

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

param缺失或值为空:引号

我有一个来自以下javascript文件的POST请求:

    this.submitQuoteButton = $("<button />")
        .text("Download PDF")
        .addClass("submitQuoteButton button-success pure-button")   
        .click(function() {

            $.ajax({

                type: "POST",
                url: "../quotes/create",
                data: {
                    name : "John ",
                    email: "john@john.com",
                    json: "data",
                    uid: "uid",
                 },
                 dataType:'text',
                 success: function(data,status,xhr){
                    console.log(status);
                   alert("SUCCESS!");
                 },
                 error: function(xhr,status,error){
                   console.log(status,error);
                   alert("ERROR!");
                 }

            });

        })
Run Code Online (Sandbox Code Playgroud)

这个POST调用我的quotes_controller创建方法,我有这个

  def create
    @quote = Quote.new(quote_params)

    if @quote.save
      redirect_to root_url
    else
      redirect_to blog_path
    end
  end

  private

  def quote_params
    params.require(:quotes).permit(:uid, :name, :email, :json)
  end
Run Code Online (Sandbox Code Playgroud)

目的是获取POST请求中传递的数据,并使用create方法将其保存到我的数据库中.我这样做了吗?我得到一个:

param is missing or the value is empty for: quotes
Run Code Online (Sandbox Code Playgroud)

这是否意味着我的数据库设置或创建方法存在问题?

parameters ajax post ruby-on-rails params

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

Ruby循环遍历数组中的每个元素n次

我很难找到一个确切的例子.

如果我有一个包含5个元素的数组.例如

list = [5, 8, 10, 11, 15]
Run Code Online (Sandbox Code Playgroud)

如果要循环,我想获取该数组的第8个(例如)元素.我不想只复制数组并获取第8个元素,因为nth元素可能会改变

基本上第8个元素应该是数字10.

有什么干净的方法吗?

ruby

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

将'where'子句与方法结合使用

在我的应用程序中,a Team belongs_to :hunt.一旦Hunt确认,所有相关团队都准备好了.

这是我的team.rb文件中的一个示例,我使用该方法ready?检查是否team.hunt已确认.

#team.rb

def ready?
  hunt.confirmed? ? true : false
end
Run Code Online (Sandbox Code Playgroud)

我希望在team.rb档案中有一个范围,所以我可以打电话Teams.all.ready.count来显示准备好的团队数量.

如何在不向我的数据库添加任何内容或迭代数组等的情况下编写方法或范围来实现上述行为?

ruby scope ruby-on-rails

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