Ruby on rails Javascript方法在移动格式中不起作用(既不是JS也不是HTML)
我有一个类似reddit的应用程序,它允许用户投票选择链接 我正在尝试创建一个基于的移动版本,如果通过移动设备访问站点,则使用Ruby on rails Javascript方法在移动格式中不起作用(既不是JS也不是HTML),ruby-on-rails,mobile,Ruby On Rails,Mobile,我有一个类似reddit的应用程序,它允许用户投票选择链接 我正在尝试创建一个基于的移动版本,如果通过移动设备访问站点,则使用mobile.erb格式 投票方法在非移动格式下工作良好(默认为javascript,但也可以在html中工作),但在移动格式下返回一个错误,如下所示。请注意,它正在尝试Get,而不是Post Started GET "/links/98/vote?type=like" for 127.0.0.1 at 2012-12-25 19:16:45 -0500 ActionCo
mobile.erb
格式
投票方法在非移动格式下工作良好(默认为javascript,但也可以在html中工作),但在移动格式下返回一个错误,如下所示。请注意,它正在尝试Get
,而不是Post
Started GET "/links/98/vote?type=like" for 127.0.0.1 at 2012-12-25 19:16:45 -0500
ActionController::RoutingError (No route matches [GET] "/links/98/vote"):
这可能是什么原因造成的?过滤器前的是否阻止javascript?我怎样才能解决这个问题?非常感谢您的投入
应用程序\u控制器.rb
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
request.format = :mobile if mobile_device?
end
def mobile_device?
if session[:mobile_param]
session[:mobile_param] == "1"
else
request.user_agent =~ /Mobile/
end
end
helper_method :mobile_device?
resources :links do
member { post :vote }
end
def vote
value = params[:type] == "like" ? 1 : 0
@link = Link.find(params[:id])
@link.add_or_update_evaluation(:link_votes, value, current_user)
respond_to do |format|
format.html { redirect_to :back }
format.mobile { redirect_to :back }
format.js
end
end
<div id="link_<%= @link.id %>">
<%= link_to "like", vote_link_path(@link, type: "like"), method: "post", remote: true %>
</div>
<div id="link_points_<%= @link.id %>">
<%= @link.reputation_for(:link_votes).to_i %>
</div>
$('#link_<%= @link.id %>').html("<%= j link_to "up", vote_link_path(@link, type: "like"), method: "post", remote: true %>");
$('#link_points_<%= @link.id %>').html("<%= @link.reputation_for(:link_votes).to_i %>;
Mime::Type.register_alias "text/html", :mobile
Mime::Type.register_alias "text/javascript", :mobilejs /* newly added mobilejs */
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
if mobile_device?
if request.format == :js
request.format = :mobilejs /* newly added mobilejs format */
else
request.format = :mobile
end
end
end
routes.rb
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
request.format = :mobile if mobile_device?
end
def mobile_device?
if session[:mobile_param]
session[:mobile_param] == "1"
else
request.user_agent =~ /Mobile/
end
end
helper_method :mobile_device?
resources :links do
member { post :vote }
end
def vote
value = params[:type] == "like" ? 1 : 0
@link = Link.find(params[:id])
@link.add_or_update_evaluation(:link_votes, value, current_user)
respond_to do |format|
format.html { redirect_to :back }
format.mobile { redirect_to :back }
format.js
end
end
<div id="link_<%= @link.id %>">
<%= link_to "like", vote_link_path(@link, type: "like"), method: "post", remote: true %>
</div>
<div id="link_points_<%= @link.id %>">
<%= @link.reputation_for(:link_votes).to_i %>
</div>
$('#link_<%= @link.id %>').html("<%= j link_to "up", vote_link_path(@link, type: "like"), method: "post", remote: true %>");
$('#link_points_<%= @link.id %>').html("<%= @link.reputation_for(:link_votes).to_i %>;
Mime::Type.register_alias "text/html", :mobile
Mime::Type.register_alias "text/javascript", :mobilejs /* newly added mobilejs */
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
if mobile_device?
if request.format == :js
request.format = :mobilejs /* newly added mobilejs format */
else
request.format = :mobile
end
end
end
链接\u controller.rb
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
request.format = :mobile if mobile_device?
end
def mobile_device?
if session[:mobile_param]
session[:mobile_param] == "1"
else
request.user_agent =~ /Mobile/
end
end
helper_method :mobile_device?
resources :links do
member { post :vote }
end
def vote
value = params[:type] == "like" ? 1 : 0
@link = Link.find(params[:id])
@link.add_or_update_evaluation(:link_votes, value, current_user)
respond_to do |format|
format.html { redirect_to :back }
format.mobile { redirect_to :back }
format.js
end
end
<div id="link_<%= @link.id %>">
<%= link_to "like", vote_link_path(@link, type: "like"), method: "post", remote: true %>
</div>
<div id="link_points_<%= @link.id %>">
<%= @link.reputation_for(:link_votes).to_i %>
</div>
$('#link_<%= @link.id %>').html("<%= j link_to "up", vote_link_path(@link, type: "like"), method: "post", remote: true %>");
$('#link_points_<%= @link.id %>').html("<%= @link.reputation_for(:link_votes).to_i %>;
Mime::Type.register_alias "text/html", :mobile
Mime::Type.register_alias "text/javascript", :mobilejs /* newly added mobilejs */
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
if mobile_device?
if request.format == :js
request.format = :mobilejs /* newly added mobilejs format */
else
request.format = :mobile
end
end
end
\u link.mobile.erb
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
request.format = :mobile if mobile_device?
end
def mobile_device?
if session[:mobile_param]
session[:mobile_param] == "1"
else
request.user_agent =~ /Mobile/
end
end
helper_method :mobile_device?
resources :links do
member { post :vote }
end
def vote
value = params[:type] == "like" ? 1 : 0
@link = Link.find(params[:id])
@link.add_or_update_evaluation(:link_votes, value, current_user)
respond_to do |format|
format.html { redirect_to :back }
format.mobile { redirect_to :back }
format.js
end
end
<div id="link_<%= @link.id %>">
<%= link_to "like", vote_link_path(@link, type: "like"), method: "post", remote: true %>
</div>
<div id="link_points_<%= @link.id %>">
<%= @link.reputation_for(:link_votes).to_i %>
</div>
$('#link_<%= @link.id %>').html("<%= j link_to "up", vote_link_path(@link, type: "like"), method: "post", remote: true %>");
$('#link_points_<%= @link.id %>').html("<%= @link.reputation_for(:link_votes).to_i %>;
Mime::Type.register_alias "text/html", :mobile
Mime::Type.register_alias "text/javascript", :mobilejs /* newly added mobilejs */
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
if mobile_device?
if request.format == :js
request.format = :mobilejs /* newly added mobilejs format */
else
request.format = :mobile
end
end
end
vote.js.erb
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
request.format = :mobile if mobile_device?
end
def mobile_device?
if session[:mobile_param]
session[:mobile_param] == "1"
else
request.user_agent =~ /Mobile/
end
end
helper_method :mobile_device?
resources :links do
member { post :vote }
end
def vote
value = params[:type] == "like" ? 1 : 0
@link = Link.find(params[:id])
@link.add_or_update_evaluation(:link_votes, value, current_user)
respond_to do |format|
format.html { redirect_to :back }
format.mobile { redirect_to :back }
format.js
end
end
<div id="link_<%= @link.id %>">
<%= link_to "like", vote_link_path(@link, type: "like"), method: "post", remote: true %>
</div>
<div id="link_points_<%= @link.id %>">
<%= @link.reputation_for(:link_votes).to_i %>
</div>
$('#link_<%= @link.id %>').html("<%= j link_to "up", vote_link_path(@link, type: "like"), method: "post", remote: true %>");
$('#link_points_<%= @link.id %>').html("<%= @link.reputation_for(:link_votes).to_i %>;
Mime::Type.register_alias "text/html", :mobile
Mime::Type.register_alias "text/javascript", :mobilejs /* newly added mobilejs */
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
if mobile_device?
if request.format == :js
request.format = :mobilejs /* newly added mobilejs format */
else
request.format = :mobile
end
end
end
$('#link').html(“”);
$('#link_points').html(“;
以下是我所做的:
config/initializers/mime_types.rb
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
request.format = :mobile if mobile_device?
end
def mobile_device?
if session[:mobile_param]
session[:mobile_param] == "1"
else
request.user_agent =~ /Mobile/
end
end
helper_method :mobile_device?
resources :links do
member { post :vote }
end
def vote
value = params[:type] == "like" ? 1 : 0
@link = Link.find(params[:id])
@link.add_or_update_evaluation(:link_votes, value, current_user)
respond_to do |format|
format.html { redirect_to :back }
format.mobile { redirect_to :back }
format.js
end
end
<div id="link_<%= @link.id %>">
<%= link_to "like", vote_link_path(@link, type: "like"), method: "post", remote: true %>
</div>
<div id="link_points_<%= @link.id %>">
<%= @link.reputation_for(:link_votes).to_i %>
</div>
$('#link_<%= @link.id %>').html("<%= j link_to "up", vote_link_path(@link, type: "like"), method: "post", remote: true %>");
$('#link_points_<%= @link.id %>').html("<%= @link.reputation_for(:link_votes).to_i %>;
Mime::Type.register_alias "text/html", :mobile
Mime::Type.register_alias "text/javascript", :mobilejs /* newly added mobilejs */
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
if mobile_device?
if request.format == :js
request.format = :mobilejs /* newly added mobilejs format */
else
request.format = :mobile
end
end
end
应用程序\u控制器.rb
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
request.format = :mobile if mobile_device?
end
def mobile_device?
if session[:mobile_param]
session[:mobile_param] == "1"
else
request.user_agent =~ /Mobile/
end
end
helper_method :mobile_device?
resources :links do
member { post :vote }
end
def vote
value = params[:type] == "like" ? 1 : 0
@link = Link.find(params[:id])
@link.add_or_update_evaluation(:link_votes, value, current_user)
respond_to do |format|
format.html { redirect_to :back }
format.mobile { redirect_to :back }
format.js
end
end
<div id="link_<%= @link.id %>">
<%= link_to "like", vote_link_path(@link, type: "like"), method: "post", remote: true %>
</div>
<div id="link_points_<%= @link.id %>">
<%= @link.reputation_for(:link_votes).to_i %>
</div>
$('#link_<%= @link.id %>').html("<%= j link_to "up", vote_link_path(@link, type: "like"), method: "post", remote: true %>");
$('#link_points_<%= @link.id %>').html("<%= @link.reputation_for(:link_votes).to_i %>;
Mime::Type.register_alias "text/html", :mobile
Mime::Type.register_alias "text/javascript", :mobilejs /* newly added mobilejs */
before_filter :prepare_for_mobile
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
if mobile_device?
if request.format == :js
request.format = :mobilejs /* newly added mobilejs format */
else
request.format = :mobile
end
end
end