有没有人得到了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)的方法:
内联表格:
<%= h( @email.name ) %>$('#email_name').editable( <%= email_path(@email).to_json %>, { name: 'email[name]', method: 'PUT', submitdata: { authenticity_token: <%= form_authenticity_token.to_json %>, wants: 'name' } });
控制器:
def update @email = Email.find( params[:id] ) @email.update_attributes!( params[:email ) respond_to do |format| format.js end end
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 %>
这个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 : "", tooltip : 'Double-click to edit...' }) }); });
如果您的Controller URL是RESTful,这是有效的.