我的Rails应用程序中有一个反馈表单.反馈表单需要初始化@support变量,并且应该在每个页面上都可见.初始化很短:
@support = Support.new(:id => 1)
Run Code Online (Sandbox Code Playgroud)
但是,将此变量初始化一次并从任何地方访问它都会很不错.怎么可能呢?
可能是一个愚蠢的问题,但有没有办法直接从rails控制台发出http请求?那些是POST/GET/PUT/DELETE?没有先做所有的路由?
我正在尝试使用link_to:remote选项执行简单的AJAX请求并动态显示响应.问题是我得到5个响应而不是1个.为什么会发生这种情况?
page.html.erb:
<%= link_to item.title, item_path(item, :format => :js), :remote => true %>
Run Code Online (Sandbox Code Playgroud)
show.js.erb:
$("<%= escape_javascript render(:file => 'items/show.html.erb') %>").insertAfter('#sortable');
$('#show_item').slideDown();
Run Code Online (Sandbox Code Playgroud)
items_controller.rb:
def show
@item = Item.find(params[:id])
respond_to do |format|
format.html
format.js
end
end
Run Code Online (Sandbox Code Playgroud)
更新:我正在使用jQuery.Gemset包括Devise,paperclip和simple_form.使用时我也有类似的问题:用link_to确认.问题是,无论您按什么,此确认对话框都会显示5次.
生成的html中只有一个带有'sortable'id的项:
<ul id="sortable">
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><a href="/items/10.js" data-remote="true">Another item</a></li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><a href="/items/9.js" data-remote="true">test</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)