是否有合理的方法来访问视图属性"passedArgs"(或任何类似的)
/* view */
$this->passedArgs
Run Code Online (Sandbox Code Playgroud)
从帮助者手中?
我很乐意自定义帮助程序的_construct()或自定义app_helper ...但我不想$this->passedArgs
在每个视图或用法上都传递给帮助程序.
我认为在ruby或rails中有一个方法可以做到这一点,但我不记得在哪里找到它或如何搜索它,所以我希望stackoverflow的集体智慧可能有所帮助.我不介意写一个方法来做到这一点,但我相信有人有更好的解决方案.
奇怪的是 - 我有这样的身份验证模块lib/
:
module Authentication
protected
def current_user
User.find(1)
end
end
Run Code Online (Sandbox Code Playgroud)
在ApplicationController中,我包含了这个模块和所有帮助程序,但方法current_user在控制器中可用,但不在视图中:(如何使其工作?
有没有办法在Rails中找到特定多态类型的所有多态模型?所以如果我有Group,Event和Project都有一个声明,如:
has_many :assignments, :as => :assignable
我可以这样做:
Assignable.all
...要么
BuiltInRailsPolymorphicHelper.all("assignable")
那样就好了.
编辑:
...这样Assignable.all
返回[Event, Group, Product]
(类数组)
我有一个使用下面结构的rails帮助器,但是当我使用它时,我得到了消息
undefined method 'link_to'
Run Code Online (Sandbox Code Playgroud)
助手安排如下:
module MyHelper
class Facet
def render_for_search
link_to("Value", params)
end
end
class FacetList
attr_accessor :facets
def initialize
#Create facets
end
def render_for_search
result = ""
facets.each do |facet|
result << facet.render_for_search
end
result
end
end
end
Run Code Online (Sandbox Code Playgroud) 我正在使用有点宝石,并希望能够访问我的帮助器方法中的有点API(由视图和邮件程序调用以生成URL).
我在ApplicationController中的this方法中启动了一个API连接:
(有没有更适合做BTW的地方?)
class ApplicationController < ActionController::Base
before_filter :bitly_connect
def bitly_connect
Bitly.use_api_version_3
@bitly ||= Bitly.new(APP_CONFIG['bitly_username'], APP_CONFIG['bitly_api_key'] )
end
end
Run Code Online (Sandbox Code Playgroud)
默认情况下,我无法访问@bitly
我的助手.你能建议一种方法来实现这一目标吗?
我找到的唯一相关线程没有帮助: Rails 3和Helper中的Controller Instance Variables
谢谢.
我正在尝试将一个类应用于Rails 3中button_to生成的表单.
该:class
选项设置提交按钮的类,以便文档告诉我们:form_class
将类应用于表单.
例如
<%= button_to 'x', user_contact_path(@user, contact), :method => :delete, :form_class => "delete" %>
Run Code Online (Sandbox Code Playgroud)
这只是将属性添加form_class="delete"
到按钮元素.我尝试过使用各种组合:html_options
等等.
有人知道怎么做吗?
我正在尝试在Magento中创建一个自定义帮助程序模块,但是当我从页面调用它时出现以下错误:
Warning: include(Mage/SEO/Helper/Data.php) [function.include]: failed to open stream: No such file or directory in /home/strailco/1stclassholidays.com/html/lib/Varien/Autoload.php on line 93
Run Code Online (Sandbox Code Playgroud)
从模板我使用以下来调用帮助程序模块:
<?php echo Mage::helper('SEO')->getFullProductUrl($product); ?>
Run Code Online (Sandbox Code Playgroud)
辅助模块设置在:
/app/code/local/SEO/Fullurl/Helper/Data.php
/app/code/local/SEO/Fullurl/etc/config.xml
Run Code Online (Sandbox Code Playgroud)
Data.php调用函数:
<?php
class getFullProductUrl {
public function getFullProductUrl( $product )
{
}
Run Code Online (Sandbox Code Playgroud)
我的config.xml设置如下:
<?xml version="1.0"?>
<config>
<global>
<helpers>
<SEO>
<class>getFullProductUrl</class>
</SEO>
</helpers>
</global>
</config>
Run Code Online (Sandbox Code Playgroud)
我认为问题是我设置config.xml的方式,但我正在努力找出正确的方法.
我会非常感谢你能给予的任何帮助.我已经在这方面工作了几天但是无法让它工作.
非常感谢
贾森
大家好!
因为似乎没有答案:通过把手部分传递变量,我正在努力解决这个问题.因此,我们的想法是注册一个辅助函数,该函数使特定模板具有可能的值.一些代码使得理解更好.
这是我如何调用我的助手:
<div>
{{myHelper}}
</div>
Run Code Online (Sandbox Code Playgroud)
这个帮助器注册了这个小代码:
hbs.registerHelper(name, function (args) {
args = args || {};
var template = hbs.compile(fs.readFileSync(__dirname + '/' + file, 'utf8'));
return template(args);
});
Run Code Online (Sandbox Code Playgroud)
我把这个snippiet放到一个循环中,一次注册不同的帮助器.这意味着给出了'name'和'file'.
好的,现在我可以做这样的事情:
// 'values' could be something like this:
var values = { headline: 'HEADLINE' }
<div>
{{myHelper values}}
</div>
Run Code Online (Sandbox Code Playgroud)
在帮助器中,我现在可以测试是否给出了某些值:
// myHelper template
<div>
{{#if headline}}
<h1>{{headline}}</h1>
{{/if}}
<p>Lorem ipsum</p>
</div>
Run Code Online (Sandbox Code Playgroud)
这个小小的解决方法适合我,但有一个问题.如上所述注册助手,返回纯HTML转义字符串.因此,调用帮助程序不会输出呈现的HTML代码段.它将HTML作为转义字符串输出.
你有没有人知道如何让我的代码片段将HTML作为HTML返回?
/帕斯卡尔
我正在使用Rubymine(5.4.3.2.1)进行Hartl的RoR教程,我遇到了路径助手的麻烦.root_path工作得很好,但rubymine说'找不到xxxx_path'用于控制器中的其他操作.
Rspec和Rails服务器与那些相同的路径助手一起工作得很好!!
我的routes.rb:
SampleProject::Application.routes.draw do
get "users/new"
root 'static_pages#home'
match '/signup', to: 'users#new', via: 'get'
match '/help', to: 'static_pages#help', via: 'get'
match '/about', to: 'static_pages#about', via: 'get'
match '/contact', to: 'static_pages#contact', via: 'get'
end
Run Code Online (Sandbox Code Playgroud)
我也尝试使用get而不是匹配,但这没有帮助.
helpers ×10
php ×2
actionview ×1
cakephp ×1
class ×1
css ×1
e-commerce ×1
html ×1
link-to ×1
magento ×1
namespaces ×1
rendering ×1
routes ×1
ruby ×1
rubymine ×1
templating ×1
views ×1