Seb*_*ian 13 ruby jquery ruby-on-rails jeditable
有没有人得到了jQuery插件jeditable在一个Rails应用程序正常运行.如果是这样,你能否分享一些关于如何设置它的提示?我在创建"submit-url"时遇到了一些麻烦.
IIRC,你不能简单地在javascript中调用ruby代码(请让我错了:-).你的意思是RJS ??? 这不仅限于Prototype吗?我正在使用jQuery.
更新:
呃.....一会儿回答这个问题,同时转向另一个解决方案.但是IIRC我的主要问题如下:
我正在使用RESTful资源.所以,假设我必须为博客建模,因此拥有资源"帖子".如果我想编辑帖子(例如ID为8的帖子),我的更新将通过HTTP发送到带有HTTP动词POST 的URL http://my.url.com/posts/8.但是,此URL是在我的Rails代码中构建的.那么如何将我的submit-url放入我的jQuery代码中?由于这是RESTful代码,因此我的更新URL将随每个帖子而变化.
以下是我使用我的Restful Rails应用程序(2.2.2)连接JEditable(1.6.2)的方法:
内联表格:
<div id="email_name"><%= h( @email.name ) %></div>
$('#email_name').editable( <%= email_path(@email).to_json %>, {
name: 'email[name]',
method: 'PUT',
submitdata: {
authenticity_token: <%= form_authenticity_token.to_json %>,
wants: 'name'
}
});
Run Code Online (Sandbox Code Playgroud)
控制器:
def update
@email = Email.find( params[:id] )
@email.update_attributes!( params[:email )
respond_to do |format|
format.js
end
end
Run Code Online (Sandbox Code Playgroud)
update.js.erb
<%=
case params[:wants]
when 'name' then h( @email.name )
# add other attributes if you have more inline forms for this model
else ''
end
%>
Run Code Online (Sandbox Code Playgroud)
这个switch语句有点笨拙.如果ajax请求成功并且没有返回任何内容,那么如果JEditable默认只保存提交的值,那将是很好的.
请原谅我现在提出这个问题,但我只是找时间再次查看我的代码.我想我通过以下javascript(我在rails中的application.js)解决了我的问题:
jQuery(document).ready(function($) {
$(".edit_textfield").each( function(i) {
$(this).editable("update", {
type : 'textarea',
rows : 8,
name : $(this).attr('name'),
cancel : 'Cancel',
submit : 'OK',
indicator : "<img src='../images/spinner.gif' />",
tooltip : 'Double-click to edit...'
})
});
});
Run Code Online (Sandbox Code Playgroud)
如果您的Controller URL是RESTful,这是有效的.