【问题标题】:Ruby on rails: How to pass checkbox values to controllerRuby on rails:如何将复选框值传递给控制器
【发布时间】:2016-01-16 00:32:39
【问题描述】:

我想使用复选框来评价一本书。

我想要 5 个整数,每个整数都有一个复选框。只能检查一个。 喜欢: 1 2 3 4 5

每个旁边都有一个复选框。

这些整数不直接对应数据库中的任何值。

如何在我的视图中准确地执行此操作,以及如何在我的控制器中使用检查的值?我想检查选择了哪一个,然后更新数据库中的评分值。

我的查看代码:

<div class="book-2 book-text col-8">
    <h2><%= @book.title %></h2>

    <p>Rate book:</p>
 <div>

控制器:

def detailedbook
    @book = Book.find(params[:id])
end

我的费率模型:

    class CreateRates < ActiveRecord::Migration
  def up
    create_table :rates do |t|
      t.integer "user_id", null: false
      t.integer "book_id", null: false
      t.float "rating", null: false
      t.datetime "created_at"
      t.datetime "updated_at"
      t.timestamps null: false
    end
  end

  def down
    drop_table :rates
  end
end

我的图书模型:

class CreateBooks < ActiveRecord::Migration
  def up
    create_table :books do |t|
      t.string "title", null: false
      t.float "rating", default: 0
      t.string "source"
      t.integer "published"
      t.datetime "created_at"
      t.datetime "updated_at"
      t.timestamps null: false
    end
  end

  def down
    drop_table :books
  end
end

如果具有 user_id 的用户之前没有为这本书评分,我想创建一个新的对象 Rates 实例。如果他有,我会为这个用户更新 Rates 模型中的 rating 值。然后我还会完全更新特定书籍的评分(所有评分的总和/所有评分的数量)。

【问题讨论】:

  • 如果只能提交一个,你应该改用单选输入
  • 您可以使用单选按钮来代替。你能提供一些你的视图/控制器的代码吗?
  • 甚至不知道它们的存在,谢谢。我用一些代码更新了我的问题。如果你能帮助我解决我的问题的任何部分,那就太好了:)
  • 我会使用 AJAX - 在某些评级上单击将 ratinguser_idbook_id 值发送到某个方法,并将其放入表中。你可能在使用设计吗?
  • 我不知道 devise 是什么,所以我想我没有使用它。

标签: ruby-on-rails ruby checkbox


【解决方案1】:

你可以使用这个 gem "ratyrate" 让工作更轻松

将比率宝石添加到您的 Gemfile 中

gem 'ratyrate'

下一步,运行这些命令:

rails g ratyrate user
rake db:migrate

包括这些 Javascript:

//= require jquery.raty
//= require ratyrate

您应该添加带有尺寸选项的 ratyrate_rateable 函数。您可以添加多个维度。

class Car < ActiveRecord::Base
  ratyrate_rateable "speed", "engine", "price"
end

那么你需要在用户模型中添加一个调用ratyrate_rater。

class User < ActiveRecord::Base
  ratyrate_rater
end

使用

有一个名为 rating_for 的辅助方法来添加星形链接。默认情况下 rating_for 将显示平均评分并接受来自认证用户的新评分值。

<%# show.html.erb -> /cars/1 %>

Speed  : <%= rating_for @car, "speed" %>
Engine : <%= rating_for @car, "engine" %>
Price  : <%= rating_for @car, "price" %>

更多信息,您可以访问Gem Repo https://github.com/wazery/ratyrate

【讨论】:

    猜你喜欢
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 2012-06-26
    • 2010-12-21
    • 1970-01-01
    • 2016-01-31
    相关资源
    最近更新 更多