我已经阅读了这个主题的所有答案,但我请求你的帮助bc我仍然无法找到解决方案。我创建投票计数器,将从模型增加读取喜欢计数器和写更新的计数器++到模型。
我有file:///storage/emulated/0/Download/Buzzer - 1.mp3
index.html.erb
模型架构:
<div class="row">
<div id="tasks"><%= render @like %></div>
</div>
<div class="row">
<div id="like-form"></div>
</div>
<div class="col-md-2 col-md-offset-4">
<%= link_to new_like_path, remote: true do %>
<button class="btn btn-default">New</button>
<% end %>
</div>
我有create_table "likes", force: true do |t|
t.string "count"
t.datetime "created_at"
t.datetime "updated_at"
end
LikesController
def new
if Like.first.count.to_i >= 0
then Like.create(count: "0")
end
@like = Like.first.count.to_i
@like++
Like.update(0, :count => @like.to_s)
end
档案
new.js.rb
我有 $('#like-form').html("<%= j (render 'form') %>");
$('#like-form').slideDown(350);
_form.html.erb
它不想渲染,我得到了
&#39;零&#39;不是与ActiveModel兼容的对象。它必须实施 :to_partial_path
我在rails中很新,希望这一切都有道理。我听说过实现此任务的不同方法,但请帮助我修复提供的方法:将表单w / ruby变量呈现为html。
答案 0 :(得分:1)
您不必渲染实例变量,您可以写:
remove_column :likes, :count, :integer
add_column :likes, :count, :integer, default: 0
此外,您的计数列应为整数类型。如果count列的类型为integer,则可以在数据库中将缺省值设置为0。以下是执行此操作的步骤:
在您的迁移文件中添加:
rake db:migrate
然后在您的控制台中运行count
由于您的new
列现在是整数类型,此列的默认值现在为0.您可以将控制器中的@like = Like.create
@like.increment!(:count)
操作更改为:
$('#like-form').html("<%= j (render 'form') %>");
$('#like-form').slideDown(350);
Rails有一个increment方法可以使用。此外,您应该参考您想要的内容,如果您不喜欢某些内容,我也不知道此代码的用途。
我不明白你想要达到的目标:
$("div#tasks).text(<%= j(@like) %>);
但如果您只是想更新自己喜欢的内容,可以写下:
didInsertElement
如果你能描述你想要达到的目标,我可以帮助你。