在我的Rails 4应用程序中,我创建了一个app/extra
文件夹,我存储了一些自定义类方法。
例如,在上面的文件夹中,我有一个process
文件夹,在此文件夹中,我有一个process_base.rb
文件和一些其他process_method1.rb
,process_method2.rb
,等
然后我在我的Post
模型中声明这些方法,如下所示:
def process_post
@process_method1 = Process::ProcessMethod1.new
@process_method1.process self
@process_method2 = Process::ProcessMethod2.new
@process_method2.process self
end
最后,在我的Posts#show
视图中,我使用了:
<%= @post.process_post %>
这很有效,因为我在加载帖子页面后得到了我需要的东西。
我现在想要做的是在Posts#new
视图中利用这些方法,并使用JavaScript将它们实时应用到正在创建的@post
。
例如,假设process_method1
计算@post.message
中的字符数,我希望能够在用户输入他的消息时对字符进行计数,就像你能做的那样在撰写新推文时,请在Twitter上看到。
我不是一个非常有经验的Rails开发人员,我理解这个问题可能很广泛:我知道我不能指望详细代码的完整答案,但我会感谢任何指针,这将使我能够理解方向我应该进一步调查。
也许我想要实现的目标有一个名称,知道这个名字是什么,足以在线寻找相关资源。
或者,或许,直接在JavaScript中重写所有逻辑更有意义,而不是尝试使用JavaScript应用Ruby方法。
- - - -
更新:the question here接近我想要实现的目标,除了我想知道我是否可以/应该重用我app/extra
文件夹中定义的Ruby方法避免代码和逻辑重复。
- - - -
任何形式的帮助都将受到高度赞赏。
答案 0 :(得分:1)
我现在要做的是在Posts#new视图中利用这些方法,并使用JavaScript将它们实时应用到正在创建的@post。
您可以创建响应JSON的新控制器操作,也可以使用respond_to教您现有的控制器操作以响应JSON和HTML。
另请参阅:Action Controller Overview和Working with JavaScript in Rails
例如..在用户输入消息时计算字符数,非常类似于在撰写新推文时在Twitter上看到的内容。
在该示例中,我建议使用新的控制器操作,因为简单地计算字符与创建新推文完全不同。你甚至可能完全想要一个单独的控制器。