Ruby on Rails и jeditable (jQuery)

В приведенном ниже примере я использовал: =MAX(0,MIN($O$2,H2)-MAX($O$1,G2)) и отформатирован как [мм].

enter image description here

13
задан T.Rob 16 December 2011 в 02:44
поделиться

5 ответов

Извините меня за перевод в рабочее состояние этого только теперь, но я просто нашел, что время изучило мой код снова. Я думаю, что решил свою проблему следующим JavaScript (мой 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...'
     })
 });
});

Это работает, если Ваши URL Контроллера являются УСПОКОИТЕЛЬНЫМИ.

5
ответ дан 2 December 2019 в 00:19
поделиться

Вот то, как я обеспечил электричеством JEditable (1.6.2) с помощью моего успокоительного приложения (2.2.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'
  }
});

Контроллер:

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
%>

Это немного неуклюже с тем оператором переключения. Было бы хорошо, если JEditable просто сохранил бы отправленное значение по умолчанию, если бы запрос ajax был успешен, и ничто не было возвращено.

9
ответ дан 2 December 2019 в 00:19
поделиться

При включении .js файлов в HTML затем не, но если у Вас есть js, встроенный в Вашем шаблоне представления затем да, Вы можете.

У Вас могут также быть .erb.js файлы, которые являются представлениями js.

Что-либо возможно :D

1
ответ дан 2 December 2019 в 00:19
поделиться

Я "m не уверенный я полностью понимаю проблему, которую Вы имеете, но я думаю, что Вы могли поместить что-то вроде этого в свой JavaScript:

<%= url_for(@post) %>

Это зависит, как Вы структурируете свой JavaScript, как Вам организовали Ваши файлы и т.д...

0
ответ дан 2 December 2019 в 00:19
поделиться

Если вы, контроллеры, немного менее спокойны. В частности, если у вас есть действие для обновления определенного поля, это тоже работает. Ключ передает токен аутентификации.

index.html.erb

<span id="my_edit"><%= foo.bar %></span>

<script type="text/javascript">
  $(document).ready(function() {
    $("#my_edit").editable('<%= url_for(:action => "update_bar", 
                  :id => foo) %>',
                    {
                       method: 'PUT',
                       cancel    : 'Cancel',
                       submit    : 'OK',
                       indicator : "<img src='../images/spinner.gif' />",
                       tooltip   : 'Double-click to edit...',
                       submitdata: {
                         authenticity_token: <%= form_authenticity_token.to_json %>,
                       }
                     }
    });
</script>

Упрощенный контроллер, который не оправдывает бездействие:

foo_controller.rb

def update_bar
    foo = Foo.find(params[:id])
    bar= params[:value]
            // insert justifiable code here
    foo.save
    render :text=>params[:value]
end

(Работает с Rails 2.2.2 и 2.3.2 с Jeditable 1.7.0 и jRails 0.4, хотя jRails здесь не особо взаимодействует, кроме как включает в себя jQuery 1.5)

0
ответ дан 2 December 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: