改变链接样式,在我的Rails 4,我有以下型号:轨道4:在Ajax调用
class Calendar < ActiveRecord::Base
has_many :administrations
has_many :users, through: :administrations
has_many :posts
has_many :comments, through: :posts
end
class Administration < ActiveRecord::Base
belongs_to :user
belongs_to :calendar
end
class Post < ActiveRecord::Base
belongs_to :calendar
has_many :comments
end
的post
对象将显示在Calendars#Show
视图,这些属于日历。
帖子模型有一个:approval
自定义属性。
我想从Calendars#Show
观点感谢这个自定义属性更新到一组三个阿贾克斯链接和如下已经实现了这一功能:
<%= link_to post_path(:id => post.id, "post[approval]" => "ok"), :remote => true, :method => :patch do %>
<span class="glyphicon glyphicon-ok"></span>
<% end %><br/>
<%= link_to post_path(:id => post.id, "post[approval]" => "edit"), :remote => true, :method => :patch do %>
<span class="glyphicon glyphicon-repeat"></span>
<% end %><br/>
<%= link_to post_path(:id => post.id, "post[approval]" => "remove"), :remote => true, :method => :patch do %>
<span class="glyphicon glyphicon-remove"></span>
<% end %>
这是目前工作非常正常,因为我可以看到Rails控制台的:approval
属性更新,当我点击上面的链接之一。
现在,在我更新:approval
属性的同时,我想更新链接的样式。
例如,我想点击链接变成绿色/黄色/红色(分别为第一,第二和第三个链接),另一个变为灰色。
我明白我必须确定每个样式一些CSS类,如:
.ok-green {
color: green;
}
.edit-yellow {
color: yellow;
}
.remove-red {
color: red;
}
.link-grey {
color: grey;
}
我不明白的是我会如何,我认为更新这些类,当用户点击上面的链接之一。
-----
UPDATE:也许我可以用的CoffeeScript,as recommended here,更新的类的链接。虽然Coffeescript代码应该去哪里?
-----
更新2:随着视图中的简单if else
声明,我试过如下:
<% if post.approval == "ok" %>
<span class="ok_green">
<% else %>
<span class="approval_grey" %>
<% end %>
<%= link_to post_path(:id => post.id, "post[approval]" => "ok"), :remote => true, :method => :patch do %>
<span class="glyphicon glyphicon-ok"></span>
<% end %>
</span><br/>
<% if post.approval == "edit" %>
<span class="edit_yellow">
<% else %>
<span class="approval_grey" %>
<% end %>
<%= link_to post_path(:id => post.id, "post[approval]" => "edit"), :remote => true, :method => :patch do %>
<span class="glyphicon glyphicon-repeat"></span>
<% end %>
</span><br/>
<% if post.approval == "remove" %>
<span class="remove_red">
<% else %>
<span class="approval_grey" %>
<% end %>
<%= link_to post_path(:id => post.id, "post[approval]" => "remove"), :remote => true, :method => :patch do %>
<span class="glyphicon glyphicon-remove"></span>
<% end %>
</span>
这确实改变了我的链接的颜色...但只能在页面刷新之后,而不是在我们点击链接时“实时”。
任何想法如何实现类似的想法,但在“实时”与Ajax?
-----
任何想法如何实现这一目标?
完美的是,你建议的路径(与帖子部分)就像一个魅力。非常感谢! –